派生类中的初始化顺序
Order of initialization in derived classes
我试图通过基类的构造函数初始化基类的一些成员,但失败了。在下面的代码中,派生类成员message
似乎在调用基构造函数之前没有初始化。解决方法是使用Child(string messg_arg) : message(messg_arg), Parent(messg_arg)
,但有什么方法可以避免这种情况吗?
class Parent
{
protected:
string something;
Parent(string something_arg) : something(something_arg)
{}
}
class Child : public Parent
{
public:
string message;
Child(string messg_arg) : message(messg_arg), Parent(message)
{}
}
基类构造函数在派生类中的任何成员构造函数之前调用。这应该很好:
Child(string messg_arg) : Parent(messg_arg), message(messg_arg)
{}
相关文章:
- lambda 作为接受其他参数的参数的初始化顺序
- 大括号或等于初始值设定项初始化顺序
- C++ 模板中的静态常量初始化顺序
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 销毁 pthread 互斥体和 C++ 中的取消初始化顺序
- 线程局部变量的初始化顺序
- 类静态变量初始化顺序
- 具有静态存储持续时间的常量初始化变量的初始化顺序
- 解析 CRTP 初始化顺序
- 内联初始化的静态 const 类成员的初始化顺序保证
- 使用constexpr的全局初始化顺序
- 初始化与类类型相同的静态成员(静态初始化顺序问题)
- 为什么结构属性声明和初始化顺序的行为是这样的?
- 影响初始化顺序(以C++为单位)
- MSVC 2017 在单个翻译单元中违反静态初始化顺序
- C++11 成员类初始化顺序
- 同一函数中的静态函数变量初始化顺序
- 静态内联成员初始化顺序
- C++静态初始化顺序:添加到映射中
- 静态成员的静态阵列:初始化顺序惨败的可能性