<分区>
假设我有这个构造函数:
MyClass::MyClass()
: m_foo(new Foo())
, m_bar(new Bar(m_foo))
{
}
使用这样的成员来初始化其他成员是否安全/合法?
谢谢
标签 c++
<分区>
假设我有这个构造函数:
MyClass::MyClass()
: m_foo(new Foo())
, m_bar(new Bar(m_foo))
{
}
使用这样的成员来初始化其他成员是否安全/合法?
谢谢
最佳答案
这取决于 m_foo
和 m_bar
在类定义中出现的顺序。由于数据成员是按定义顺序初始化的,所以只有当 m_foo
出现在 m_bar
之前,上面的代码才是安全的。
编译器通常会警告构造函数初始化列表和类定义之间的顺序不匹配。
关于c++ - 跨成员的构造函数成员初始值设定项列表,安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57825446/