×
Traktatov.net » Освой самостоятельно С++ за 21 день » Читать онлайн
Страница 434 из 448 Настройки

60:    (obj1.*PMF)();

61:    PMF=myClass::ShowSecond;

62:    (obj1.*PMF)();

63:    PMF=myClass::ShowThird;

64:    (ob]1 "PMF)();

65:    cout << "Static: " << myClass::GetStatic() << endl;

66:

67:    myClass obj2;

68:    PMF=myClass::ShowMerober;

69:    (obj2.*PMF)();

70:    PMF=myClass::ShowSecond;

71:    (obj2.*PMF)();

72:    PMF=myClass::ShowThird;

73:    (obj2. *PMF)();

74:    cout << "Static: " << myClass::GetStatic() << endl;

75:

76:    myClass obj3;

77:    PMF=myClass::ShowMember;

78:    (obj3. *PMF)();

79:    PMF=myClass::ShowSecond;

80:    (obj3.*PMF)();

81:    PMF=royClass::ShowThird;

82:    (obj3.*PMF)();

83:    cout << "Static: " << myClass::GetStatic() << endl;

84:    return 0;

85: }

День 15

 Контрольные вопросы

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. Опишите класс BoundedArray, являющийся массивом.

class boundedArray : public Array

{

   // ...

}

3. Опишите класс Set, выполняемый в пределах массива BoundedArray.

class Set : private Array

{

   // ...

}

4. Измените листинг 15.1 таким образом, чтобы класс String включал перегруженный

оператор вывода (>>).

1: #include

2: #include

3:

4: class String