c++ - 跨成员的构造函数成员初始值设定项列表,安全吗?

标签 c++

假设我有这个构造函数:

MyClass::MyClass()
 : m_foo(new Foo())
 , m_bar(new Bar(m_foo))
{
}

使用这样的成员来初始化其他成员是否安全/合法?

谢谢

最佳答案

这取决于 m_foom_bar 在类定义中出现的顺序。由于数据成员是按定义顺序初始化的,所以只有当 m_foo 出现在 m_bar 之前,上面的代码才是安全的。

编译器通常会警告构造函数初始化列表和类定义之间的顺序不匹配。

关于c++ - 跨成员的构造函数成员初始值设定项列表,安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57825446/

相关文章:

c++ - 任务不会使用 OpenMP 并行运行。我的设置或代码有误吗?

c++ - NVCC 警告级别

c++ - 在 C++ 中检测并清除从 dll 导入的错误对象

c++ - 在运行时加载的 dll/so 中 atexit() 的行为是什么?

c++ - 如何动态翻译qt应用程序?

c++ - 在 C++ 中复制整数数组

c++ - glInterleavedArrays() 生成 GL_INVALID_FRAMEBUFFER_OPERATION

c++ - 自动将int转换为unsigned int

c++ - sscanf_s 无法从字符串中找到所有值

c++ - 在 C++ 中实现 Matlab 语法