派生类中的初始化顺序

时间:2016-04-20 23:58:55

标签: c++ initialization derived-class

我试图通过它的构造函数初始化基类的一些成员但是我失败了。在下面的代码中,似乎派生类成员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)
    {}
}

1 个答案:

答案 0 :(得分:0)

在派生类中的任何成员构造函数之前调用基类构造函数。这应该可以正常工作:

Child(string messg_arg) : Parent(messg_arg), message(messg_arg)
{}