Программирование >>  Дополнительные возможности наследования 

1 ... 249 250 251 [ 252 ] 253 254 255 ... 265


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



1 ... 249 250 251 [ 252 ] 253 254 255 ... 265

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика