c++ - 使用 this 指针初始化列表

标签 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;
    }

最佳答案

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

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

关于c++ - 使用 this 指针初始化列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10324813/

相关文章:

c++ - 如何使用用户的输入停止程序的特定部分?

c++ - 我的代码有什么问题?乌萨科 : Friday the Thirteenth

c++ - 使用 ICC 的 Linux 中对 clock_gettime() 的 undefined reference

java - 构造函数调用必须是构造函数中的第一条语句

java - 如何为子类创建构造函数

c++ - 如果给定的模板参数提供类型定义,则使用 sfinae 启用构造函数

java - 类构造函数对象无法正确显示

java - 那么这里关于参数的操作顺序是什么?

c++ - Eclipse 中的 Irrlicht,环境不工作

c++ - 在 dos 批处理文件中关闭屏幕更新