Почему `union` не запускает конструкторы?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему `union` не запускает конструкторы?

Сообщение Anonymous »

Для этого кода:

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

struct Vec2 {
float x,y;
Vec2():x(0),y(0) {
printf( "Construct Vec2 %f %f\n",x,y );
}
};
struct Rectangle {
union {
struct { float x,y; };
Vec2 pos;
};
union {
struct { float w,h; };
Vec2 size;
};

Rectangle(){
printf( "construct Rectangle %f %f %f %f\n", x,y,w,h );
}
}

int main() {

Rectangle r;

}
Я был очень удивлен, узнав, что конструкторы по умолчанию для Vec2 не запускаются для Vec2, находящихся внутри объединения находится внутри прямоугольника
Меня очень удивил вопрос, почему это так?

Подробнее здесь: https://stackoverflow.com/questions/785 ... nstructors
Ответить

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

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

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

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

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