3. Конструкторы производных классов
Для некоторых производных классов требуются конструкторы. Если у базового класса есть конструктор, он должен вызываться при объявлении объекта, и если у этого конструктора есть параметры, их необходимо предоставить.
Параметры конструктора базового класса указываются в определении конструктора производного класса. Вызов конструктора базового класса следует непосредственно после имени конструктора производного класса, перед открывающей фигурной скобкой.
class Level0 {
private: int a;
protected: int b;
public: int c;
void f0();
Level0(int v0) {
a = b = c = v0;
}
};
class Level1: public Level0 {
private: int d;
protected: int e;
public: int f;
void f1();
Level1(int v0, int v1): Level0(v0) {
d = e = f = v1;
}
};
// Общая функция
void fn() {
Level0 L0(1);
Level1 L1(1,2);
Конструктор производного класса может инициализировать protected- и public-компоненты базового класса, не выполняя вызова конструктора. C++ вызывает конструктор по умолчанию базового класса, если этого не делает сам конструктор производного класса.
Следующий фрагмент программы даст тот же результат, что и предыдущее определение конструктора.
Level1(int v0, int v1): (v0) { // по умолчанию - Level(v0)
d = e = f = v1;
}
Конструкторы объемлемых (см. следующий параграф) классов можно вызывать в той же строке, что и конструктор базового класса. Следующий конструктор Level1 эквивалентен двум предыдущим:
Level1(int v0, int v1): Level(v0),d(v1),e(v1),f(v1) { }
- Прядок вызова конструкторов в производных классах
- Производные классы: полиморфная функция
- 29) Конструкторы и деструкторы производных классов.
- R.10 Производные классы
- 3.4.3 Объявление производных классов
- Базовые и производные классы
- 4.1. Производные классы
- Предотвращение переопределения виртуальных членов производными классами
- Объявление производных классов