当前位置:  开发笔记 > 编程语言 > 正文

将"this"传递给构造函数中的函数?

如何解决《将"this"传递给构造函数中的函数?》经验,为你挑选了1个好方法。

我可以从类构造函数中将"this"作为指针传递给函数,并在构造函数返回之前使用它指向对象的成员吗?

这样做是否安全,只要在函数调用之前正确初始化被访问的成员?

举个例子:

#include 

class Stuff
{
public:
    static void print_number(void *param)
    {
        std::cout << reinterpret_cast(param)->number;
    }

    int number;

    Stuff(int number_)
        : number(number_)
    {
        print_number(this);
    }
};

void main() {
    Stuff stuff(12345);
}

我认为这不起作用,但似乎.这种标准行为,还是仅仅是未定义的行为?



1> MattK..:

在C++中实例化对象时,构造函数中的代码是最后执行的事情.所有其他初始化,包括超类初始化,超类构造函数执行和内存分配事先发生.构造函数中的代码实际上只是在构造对象后执行其他初始化.因此,在类的构造函数中使用"this"指针并假设它指向一个完全构造的对象是完全有效的.

当然,如果尚未在构造函数代码中初始化它们,仍需要注意未初始化的成员变量.


一半是真的.在构造函数中使用它之前要三思而后行,特别是当某些东西可以从类派生时.在这种情况下,您使用部分构造的类,并且调用virtuals,afaik,undefined.对于一般的"类状态"也是如此:派生的构造函数仍然可以修改它.
推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有