Нужно ли вызывать родительский конструктор без аргументов из конструктора дочернего класса? - PullRequest
0 голосов
/ 29 марта 2019

Необходимо ли вызывать родительский конструктор без аргументов из конструктора дочернего класса?

Если у меня есть класс A :

class A {
public:
    A() : value(100) { }
    int get_value() { return value; }
private:
    int value;
};

И класс B , который наследуется от A :

class B : public A {
public:
    B() : A() {}
};

Будет ли вызываться конструктор A при инициализации объекта B , даже если у меня нет: B() : A() {} и для value установлено значение 100?

1 Ответ

1 голос
/ 29 марта 2019

Будет ли вызываться конструктор A при инициализации объекта B, даже если у меня его нет: B (): A () {} и значение установлено в 100?

Да.

Так же, как член, если базовый подобъект не имеет инициализатора, он будет инициализирован по умолчанию.Инициализация по умолчанию A вызывает объявленный пользователем конструктор.

Вам даже не нужно объявлять contsructor B.Неявно сгенерированный делает то же самое:

class B : public A {};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...