派生 类 中的初始化顺序
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)
{}
我试图通过其构造函数初始化基 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)
{}