派生 类 中的初始化顺序

Order of initialization in derived classes

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

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

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