Конструктор производного класса может вызывать конструктор своего базового класса: class TBase { public: TBase( int s, int m, int d); /* Другие компоненты класса TBase */ } class TVect: public TBase { public: TVect ( int k, int s, int m int d): TBase(s, m, d) { /* инициализация остальных компонент TVect */}; } Производные классы и правила наследования Производные классы и объекты этих классов полностью наследуют протокол своего базового класса. Возможность прямого доступа к полям и функциям-членам базового класса через протокол производного класса зависит от того, в каком из разделов описания базового класса (private, protected, public) они определены. Кроме того, возможность доступа к протоколу базового класса зависит от того, является ли производный класс открытым или закрытым, (по умолчанию производный класс является private). Конструкторы производных классов автоматически вызывают соответствующий конструктор базового класса, class А { int i,k; public: A(void) { i=0; k=0; } A(int il,int kl=0): i(il),k(kl) {} int geti(void) { return i; } void print(void) { cout « " A " « i }; class B: public A { float s; public: B(void): A() 1 s=0.; } B(int il.int k 1=0,float s 1=0.): A(il,kl),s(sl) {} float gets(void) { return s; } void print(void){A::print(); cout « " s= " « s; ) }; « k ; } class C: private A { public: C(void):A() {} C(int il.int k1=0):A(iljcl) { } int geti(void) { return A::geti(); } void print(void) { A::print(); } };
RkJQdWJsaXNoZXIy MTExODQxMg==