Содержание
-
13. Множественное наследование
1
-
13.1. Множественное наследование
2 B1 D B2 B1 B2 B1 B2 D Иерархия классов Состояние классов
-
13.1. Множественное наследование(продолжение)
class B1 { . . . }; class B2 { . . . }; class D: public B1, public B2 { . . . }; Важно: class D: public B1, B2 { . . . }; эквивалентно class D: public B1, private B2 { . . . }; 3
-
13.2. Конструкторы и деструктор класса
Конструктор производного класса: D::D( . . . ) : B1( . . . ), B2( . . . ) { . . . } Порядок вызова конструкторовбазовых классов Деструктор производного класса D:: ~D() { . . . } Вызов деструкторов базовых классов 4
-
13.3. Методы класса
class B1 { . . . public: void f1( . . . ); void f( . . . ); . . . }; class B2 { . . . public: void f2( . . . ); void f( . . . ); . . . }; 5
-
13.3. Методы класса(продолжение)
class D: public B1, public B2 { . . . public: void g( . . . ); void f( . . . ); . . . }; 6
-
void D::g( . . . ) { f1( . . . ); f2( . . . ); } void D::f( . . . ) { B1::f( . . . ); B2::f( . . . ); } D ob; ob.g( . . . ); ob.f( . . . ); ob.f1( . . . ); ob.f2( . . . ); ob.B1::f( . . . ); ob.B2::f( . . . ); 7
-
13.4. Указатели на классы
B1 *p1; B2 *p2; . . . p1 = new D( . . . ); p2 = new D( . . . ); p1->f1( . . . ); p2->f2( . . . ); p1->f( . . . ); p2->f( . . . ); 8
-
13.5. Сложная иерархия классов
9 D1 D D2 B B B D1 B D2 D Иерархия классов Состояние класса
-
13.5. Сложная иерархия классов(продолжение)
class B { private: int x[10]; public: . . . }; 10
-
class D1: public B { private: int y, w[3]; public: . . . }; class D2: public B { private: int y; public: . . . }; 11
-
class D12: public D1, public D2 { private: int z; public: D12(…): D1(…), D2(…) { … } . . . }; 12
-
int main() { B a; cout
-
D1 a1; cout
-
D2 a2; cout
-
D12 a12; cout
-
13.6. Виртуальный базовый класс
17 D1 D D2 B B D1’ D2’ D Иерархия классов Состояние класса
-
13.6. Виртуальный базовый класс (продолжение)
class B { private: int x[10]; public: . . . }; 18
-
class D1: virtual public B { private: int y, w[3]; public: . . . }; class D2: virtual public B { private: int y; public: . . . }; 19
-
class D12: public D1, public D2 { private: int z; public: D12(…): D1(…), D2(…) { … } . . . }; 20 , B(…)
-
int main() { B a; cout
-
D1 a1; cout
-
D2 a2; cout
-
D12 a12; cout
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.