Наследование в классах
Можно ли наследовать конструктор от B
Если да то как?
Заранее спасибо.
On 2002-08-24 2053, quasar1983 wrote
Имеется класс A наследуется от класса B
Можно ли наследовать конструктор от B
Если да то как?
Заранее спасибо.
Конструкторы не наследуются. Если в А явно не объявлено конструктора, компилятор сгенерирует конструктор по умолчанию, в котором будет вызываться конструктор по умолчанию класса В. Если в этом случае в В отсутствует конструктор по умолчанию, будет ошиька. Если в класса А явно объявить коструктор, то вызвать конструктор В можно так
class B
{
int m_i;
public
B(int i){ m_i = i;}
};
class A public B
{
public
A(int i) B(i) {}
};
Кстати, подобный синтаксис можно было бы применить и к инициализации m_i в А.
On 2002-08-27 0710, Anonymous wrote
Если в А явно не объявлено конструктора, компилятор сгенерирует конструктор по умолчанию, в котором будет вызываться конструктор по умолчанию класса В.
Небольшое пояснение
К-тор по умолчанию - это к-тор без аргументов. Это - либо автоматически сгенерированный компилятором к-тор (если пользователь не определил ни одного к-тора), либо - определенный пользователем к-тор, который может быть вызван без аргументов. Если пользователь определил хотя бы один к-тор, компилятор не станет генерировать к-тор по умолчанию.
Кстати, подобный синтаксис можно было бы применить и к инициализации m_i в А.
Нельзя. m_i не является ни объектом базового для A класса ни нестатическим членом класса A. Так что прямой инициализации
AA(int i)
m_i(i)
{}
не получится.
[ Это Сообщение было отредактировано Mozhay в 2002-08-27 1651 ]