【发布时间】:2018-09-07 10:37:53
【问题描述】:
我想在类中初始化一堆成员以保持源文件更干净。但是,这些对象接受我仅通过构造函数接收的参数,并且可以在构造函数初始化列表中或通过赋值在构造函数中进行初始化。 (第二个选项肯定行不通。)基本上是这样的场景:
在标题中
class Foo
{
public:
Foo(Pointer * ptr);
private:
Pointer * ptr;
Member m1{ptr, "SomeText"};
Member m2{ptr, "SomeOtherText"};
}
在 CPP 中
Foo::Foo(Pointer*ptr) :
ptr(ptr)
{
// ...
}
现在的问题是:标准是否说明了ptr 和m1 / m2 之间的初始化顺序?显然,这段代码只有在ptr在m1和m2之前初始化时才有效。
【问题讨论】:
标签: c++ initialization initialization-list operator-precedence in-class-initialization