О базовом классе в инициализации производного класса - PullRequest
1 голос
/ 07 апреля 2011

ребята.Я вижу несколько случаев, таких как:

class Derived:public Base{

public:
    Derived(...):Base(...){}
}

В какой ситуации или есть какой-либо принцип, согласно которому мы должны явно инициализировать Base в списке инициализации Derived ctor?Спасибо

Ответы [ 5 ]

4 голосов
/ 07 апреля 2011

Если вы хотите вызвать базовый конструктор с аргументами.

0 голосов
/ 07 апреля 2011

Хороший стандарт кодирования рекомендует вам всегда инициализировать базовый класс в списке инициализации конструктора.

Если конструктору базового класса требуется несколько аргументов, то вы должны это сделать.

0 голосов
/ 07 апреля 2011

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

0 голосов
/ 07 апреля 2011

Если у вас есть несколько конструкторов в базовом классе (в основном, точка входа), Таким образом, у вас есть возможность позвонить любому из них.

0 голосов
/ 07 апреля 2011

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

class foo
{
    public:
        foo() {} 
        foo( int num ) {}
};

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