假设我们有一个基类(Base)和一个派生类(Derived):
换句话说,当我们初始化
请注意,为了使此代码正确,我们需要确保在调用
在 C++ 中,假设上述初始化顺序被保持是有效的吗?或者我需要更改
class Base {
public:
Base(int x) : var1(x)
int process(){
//return some function of var1
}
protected:
int var1;
}
class Derived : public Base {
Derived(int init) : Base(init), a(process()), b(process()) {}
protected:
int a;
int b;
}
换句话说,当我们初始化
Derived
时,我们假设首先调用 Base
构造函数,该函数使用 init
值初始化基类中的 var1
成员变量,然后使用依赖于设置为 var1
的值的 process()
函数来初始化 a
和 b
成员变量。请注意,为了使此代码正确,我们需要确保在调用
a(process())
和 b(process())
之前先调用 Base(init)
。在 C++ 中,假设上述初始化顺序被保持是有效的吗?或者我需要更改
Derived
构造函数如下才能保证初始化顺序?Derived(int init) : Base(init) {
a = process();
b = process();
}