Пример следующий
#include <iostream>
class A { } ;
class B : public A {
public:
int a, b, c;
};
int main( int argc, char **argv ) {
A *a = new A;
B b;
B *bb = static_cast<B*> (a);
std::cout << b.a << " " << b.b << " " << b.c << std::endl;
std::cout << bb->a << " " << bb->b << " " << bb->c << std::endl;
}
на выходе
-1076725720 134514729 6256853
0 0 0
т/е почему то в классе "B" указателя bb полученный из указателя a класса "А", переменные проинициализровались нулями, хотя описание такого поведения в коде нет.
компилер gcc 4.1.1, это стандартное поведение компилера?
понятно что это больше похоже на хак, но тем не менее.