#c #constructor
#c #constructor
Вопрос:
ребята. Я вижу несколько случаев, подобных:
class Derived:public Base{
public:
Derived(...):Base(...){}
}
В какой ситуации или есть ли какой-либо принцип, согласно которому мы должны явно инициализировать базу в списке инициализации производного ctor? Спасибо
Комментарии:
1. В качестве резюме, вызов базового ctor с аргументами и назначение конкретного ctor являются обычным использованием для его отображения в списке инициализации.
Ответ №1:
Если вы хотите вызвать базовый конструктор с аргументами.
Комментарии:
1. конструктор, который принимает аргументы, не обязательно является конструктором «не по умолчанию».
2. Упс … почему-то я не могу отдать вам свой голос… здесь говорится, что вы должны отредактировать его один раз!
Ответ №2:
В случае, если нам нужно передать аргументы производного конструктора базовому конструктору, его можно использовать.
class foo
{
public:
foo() {}
foo( int num ) {}
};
class bar : public foo
{
public:
bar(int barNum): foo(barNum) {}
};
Ответ №3:
Если не инициализировать базовый класс явно, будет вызван конструктор по умолчанию.
Ответ №4:
Если в вашем базовом классе есть несколько конструкторов (в основном точка входа), у вас есть выбор вызвать любой из них.
Ответ №5:
Хороший стандарт кодирования рекомендует вам всегда инициализировать базовый класс в списке инициализации конструктора.
Если конструктору базового класса требуются некоторые аргументы, то вам придется это сделать.