struct Base {
int i, j;
};
struct Derived : Base {};
С выше сценарию, если мы следующее:У производного класса нет дополнительных данных; Безопасно ли статически опускать базовый объект на производный объект?
Base b;
auto& d = static_cast<Derived&>(b);
d.i = 1;
Будет ли это неопределенное поведение?
Примечание: По некоторым причинам я не могу редактировать код автоматически созданной библиотеки google protobuf. Следовательно, расширение этих классов на мой пользовательский класс, который предоставляет больше типов API &, но у него нет дополнительного члена данных.
@pSoLT, спасибо. [Downcasting с использованием Static_cast в C++] (http://stackoverflow.com/q/6322949/514235). Это сильно связано. В этом Qn мне будет больше интересно узнать, когда размеры потенциально одинаковы. Кстати, если кто-то чувствует, что принятый ответ в этом посте также относится к этому Qn, тогда будет здорово, если кто-нибудь сможет объяснить на более понятном языке. Я просто потерялся, читая этот отрывок из стандарта. :-) – iammilind