Может ли базовый класс иногда инициализировать член производного класса?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

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