带有此指针的初始化列表

时间:2012-04-25 22:36:45

标签: c++ constructor

在这里感到困惑。即使在初始化列表中传递this,程序也正在编译并成功运行。 我的印象是,在传递this时,编译器应该给出一些错误,因为这里没有创建对象。

两个cout的输出是相同的;即他们持有相同的地址。

我知道这不是正确的编程方法,但到底发生了什么?

    class foo
    {
            public:
            foo():myself( this ) {}
            foo * myself;
    };


    int main()
    {
            foo f;
            cout<<f.myself<<endl;   
            cout<<&f<<endl;
            return 0;
    }

1 个答案:

答案 0 :(得分:2)

即使对象尚未完全初始化,其地址也是已知的并且可以分配给指针。

虽然这个习惯用法并不常见,但我可以看到它被用于初始化链接列表。