Может ли базовый класс иногда инициализировать член производного класса?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Может ли базовый класс иногда инициализировать член производного класса?

Сообщение Anonymous »

Имеет ли эта программа четко определенное поведение?

Код: Выделить всё

struct Foo;

struct FooImpl {
FooImpl();
};

struct Foo : FooImpl {
int bar;
};

FooImpl::FooImpl() {
static_cast(this)->bar = 0;
}

int main() {
return Foo().bar;
}
Особо следует отметить, что Foo::bar инициализируется по умолчанию. Я знаю, что это определенно плохо, если Foo::bar инициализируется Foo, отсюда и этот конкретный пример.
Имейте в виду, что это упрощенный пример. чтобы проиллюстрировать случай. Меня интересует, что об этом говорит спецификация C++ (а не то, хороший это или плохой код стилистически).

Подробнее здесь: https://stackoverflow.com/questions/675 ... sss-member
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»