|
Программирование >> Дополнительные возможности наследования
33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: void myClass::ShowMember() cout << itsMember: << itsMember << endl: void myClass:: ShowSecondO cout itsSecond: itsSecond endl; void myClass::ShowThird() cout itsThird: itsThird endl; nt myClass::itsStatic = 0; nt myClass::GetStatic() return itsStatic; nt mainO void (myClass;:.PMF) (); myClass objl; PMF=myClass;:ShowMember; (obj1..PMF)(); PMF=myClass::ShowSecond; (obj1..PMF)(); PMF=myClass;:ShowThird; (obj1..PMF)(); cout Static: myClass;:GetStatic() endl; myClass obj2; PMF=myClass;;ShowMember; (obj2..PMF)(); PMF=myClass::ShowSecond; (obj2..PMF)(); PMF=myClass::ShowThird; (obj2..PMF)(); cout Static: myClass;;GetStaticO endl; myClass obj3; PMF=myClass::ShowMember; (obj3..PMF)(); PMF=myClass;;ShowSecond; 81 82 83 84 85 (оЬзЗ..РМР)(); PMF=myClass: :ShowThircl; (ob]3..PMF)(); cout Static: nyClass::GetStatic() endl; return 0; } День 16 Контрольные вопросы 1. Как объявить класс, являющийся частным проявлением другого класса? С помощью открытого наследования. 2. Как объявить класс, объекты которого должны использоваться в качестве переменных-членов другого класса? Необходимо использовать вложение классов. 3. В чем состоят различия между вложением и делегированием? Под вложением понимают использование объектов одного класса в качестве переменных-членов другого класса. Под делегированием - передачу одним классом другому классу выполнения некоторых специфических функций. В то же время делегирование часто реализуется за счет вложения классов. 4. В чем состоят различия между делегированием и выполнением класса в пределах другого класса? Под делегированием понимают передачу одним классом другому классу выполнения некоторых специфических функций. Под реализацией в пределах другого класса - наследование выполнения специфических функций от другого класса. 5. Что такое функция-друг? Это функция, объявленная с целью получения доступа к зашишенным и закрытым членам другого класса. 6. Что такое класс-друг? Это класс, объявленный таким образом, чтобы все его функции-члены были дружественными по отношению к другому классу. 7. Если класс Dog является другом Boy, то можно ли сказать, что Boy - друг Dog? Нет, дружественность классов не взаимна. 8. Если класс Dog является другом Boy, а Terrier произведен от Dog, является ли Terrier другом Boy? Нет, дружественность классов не наследуется. 9. Если класс Dog является другом Boy, а Boy - другом House, можно ли считать Dog другом House? Нет, дружественность классов не ассоциативна. 10. Где необходимо размещать объявление функции-друга? В любом месте внутри объявления класса. Не имеет никакого значения, в каком именно разделе будет помещено это объявление - в public:, protected: или private:. Упражнения 1. Объявите класс Animal (Животное), который содержит переменную-член, являющуюся объектом класса String. class Animal: { private: String itsName; 2. Опищите класс Bounded Array, являющийся массивом. class boundedArray : public Array { ... } 3. Опищите класс Set, выполняемый в пределах массива BoundedArray. class Set : private Array { . . . } 4. Измените листинг 15.1 таким образом, чтобы класс String включал перегруженный оператор вывода ( ). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ftinclude <iostream.h> ftinclude <string.h> class String { public: конструкторы StringO; String(const char const); String(const String &); StringO; перегруженные операторы char & operator[](int offset); char operator[](int offset) const; String operator+(const String&); void operator+=(const String&); String & operator= (const String &); friend ostream& operator
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |