Где нибудь описано что компилятор должен себя так вести
От: Аноним  
Дата: 05.06.08 06:04
Оценка:
Пример следующий
#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, это стандартное поведение компилера?
понятно что это больше похоже на хак, но тем не менее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.