c++ - 在下面的例子中在构造函数中传递 *this 是否可以

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

我多次遇到这样的情况,包含的对象需要使用容器功能。在包含的对象中引用容器对象似乎是执行此操作的最佳方法。当然,我可以用一个指针来做到这一点,这样我就可以有一个 setter 我更愿意使用引用来执行此操作,这意味着我需要在构造函数中对其进行初始化,因此出现了问题。

最佳答案

因为您只是初始化对 B 的引用,所以这应该没问题——当 B 的构造函数运行时,内存位置已经设​​置好了。

请记住,您不能从 A 的构造函数中安全地调用 B 中的任何方法,因为 B 尚未完成构造。

关于c++ - 在下面的例子中在构造函数中传递 *this 是否可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2484389/

相关文章:

c++ - 使用构造函数打印特定数字时遇到问题

c++ - 如何使用字符串(字符数组)初始化 char 指针而不是整数数组的 int 指针?

c++ - 在 apache 上运行 C++ cgi 程序?

c++ - 重叠 header 包含

c++ - C lib文件依赖冲突

c++ - 如何创建一个只能被自己类调用的构造函数?

c++ - 用于存储简单小数值的浮点替代方案

java - 如果类具有参数化构造函数,为什么 Java 不提供默认构造函数?

java - Random() 构造函数参数

c++ - 何时以及如何在 C++ 中初始化静态数据?