Всегда ли необходимо вызывать конструктор базового класса в C ++? - PullRequest
3 голосов
/ 05 июля 2010

Предположим, у меня есть некоторый класс C, и я наследую его и назову этот класс D.Всегда ли нужно вызывать конструктор по умолчанию C, как в этом примере:

class C {
    public:
        C() { ... }
};

class D {
    public:
        D() : C() { ... }
};

Обратите внимание, что C имеет только конструктор по умолчанию.Должен ли я позвонить из D?Я не мог понять, как это выяснить.

Спасибо, Бода Кидо.

1 Ответ

11 голосов
/ 05 июля 2010

Вам не нужно указывать конструктор базового класса в списке инициализатора конструктора вашего производного типа.Если он опущен, будет сделана попытка вызвать базовый конструктор без параметров.Если такого базового конструктора без параметров не существует, вы получите ошибку компиляции.

...