C++在构造函数中使用此指针

gil*_*rtc 25 c++ multithreading constructor this

C++,在类构造函数中,我启动了一个新的线程,其中this指针作为参数,将广泛用于线程(例如,调用成员函数).这是件坏事吗?为什么以及后果是什么?

我的线程启动过程位于构造函数的末尾.

Dav*_*eas 19

结果是线程可以启动并且代码将开始执行尚未完全初始化的对象.这本身就够糟糕了.

如果你正在考虑那个'好吧,它将是构造函数中的最后一个句子,它将只是构造它得到......'再想一想:你可能派生自那个类,并且派生对象将不会被构造.

编译器可能想要使用你的代码并决定它将重新排序指令,它可能实际上this在执行代码的任何其他部分之前传递指针...多线程是棘手的