可以在以下示例中的构造函数中传递*this

Nik*_*hil 3 c++ constructor

Class A
{
  A(B& b) : mb(b) 
   {
     // I will not access anything from B here
    }

  B& mb;
};


Class B
{
B(): a(*this)
{}

A a;
}
Run Code Online (Sandbox Code Playgroud)

我可能遇到过这样的情况,包含的对象需要使用容器功能.在包含的对象中引用容器对象似乎是执行此操作的最佳方法.当然,我可以用一个指针来做这个,这样我可以有一个setter setB(B* b) {mb = b;},我可以在我确定B初始化后稍后调用但是我更喜欢用引用来做这个,这意味着我需要在它中初始化它构造函数,因此问题.

Bil*_*eal 9

由于你只是初始化对B的引用,这应该没问题 - 当B的构造函数运行时,它的内存位置已经设​​置好了.

请记住,你不能安全地从A的构造函数中调用B中的任何方法,因为B还没有完成构建.