Инициализация членов наследника
От: Аноним  
Дата: 27.09.06 17:57
Оценка:
Объясните плзз, почему j нормально инициализируется, а i ругается

class a
{
protected:
    int i;
    int j;
};

class b: public a
{
public:
    b();
};

b::b()
: i(1)
{
    j = 2;
};
Re: Инициализация членов наследника
От: shank  
Дата: 27.09.06 18:11
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Объясните плзз, почему j нормально инициализируется, а i ругается


Потому что в списке инициализации класс может инициализировать только собственные данные-члены и базовые подобъекты.
Добавь в класс a соответствующий конструктор и вызывай его из списка инициализации b.
Re[2]: Инициализация членов наследника
От: Аноним  
Дата: 27.09.06 18:47
Оценка:
Здравствуйте, shank, Вы писали:

А>>Объясните плзз, почему j нормально инициализируется, а i ругается


S>Потому что в списке инициализации класс может инициализировать только собственные данные-члены и базовые подобъекты.

S>Добавь в класс a соответствующий конструктор и вызывай его из списка инициализации b.

Спасибо!

так слишком просто

а рзве после наследования данные члены родителя не переходят к наследнику?
Re[3]: Инициализация членов наследника
От: shank  
Дата: 27.09.06 19:00
Оценка: 2 (1)
Здравствуйте, Аноним, Вы писали:

А>а рзве после наследования данные члены родителя не переходят к наследнику?

Переходят. Но инициализировать все же нельзя, наверно, потому что конструктор базового подобъекта всегда отрабатывает, явно или неявно. В этом случае может получиться так, что переменная инициализируется дважды, чего в С++ не бывает.
Re[4]: Инициализация членов наследника
От: mLenok  
Дата: 27.09.06 19:40
Оценка:
Здравствуйте, shank, Вы писали:

А>>а рзве после наследования данные члены родителя не переходят к наследнику?

S>Переходят. Но инициализировать все же нельзя, наверно, потому что конструктор базового подобъекта всегда отрабатывает, явно или неявно. В этом случае может получиться так, что переменная инициализируется дважды, чего в С++ не бывает.

Спасибо, вроде въехала!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.