C++ constructor: garbage while initialization of const reference

что не так с этим кодом, почему я получаю неправильный ответ:

class X
{
private:
        const int a;
        const int& b;
public:
        X(): a(10) , b(20)
        {
        //      std::cout << "constructor : a " << a << std::endl;
        //      std::cout << "constructor : b " << b << std::endl;
        }

        void display()
        {
            std::cout << "display():a:" << a << std::endl;
            std::cout << "display():b:" << b << std::endl;

        }
};


int
main(void)
{
        X x;
        x.display();
return 0;
}

Приведенный выше код даст мне результат как

display():a:10
display():b:1104441332

Но если я удалю закомментированные 2 строки внутри конструктора по умолчанию, он даст мне правильный результат, который

constructor : a 10
constructor : b 20
display():a:10
display():b:20

пожалуйста, помогите, спасибо

21
задан Marlon 4 February 2012 в 06:47
поделиться