我new用来为派生类分配内存,我也想初始化它的基本私有成员
我怎样才能做到这一点?
class Base {
private:
int value;
}
class Derived : public Base {
....
}
Run Code Online (Sandbox Code Playgroud)
任何使用基础构造函数的聪明方法?谢谢!
Base需要有一个初始化的构造函数value,例如
Base(int v):value(v){};
Run Code Online (Sandbox Code Playgroud)
然后,在Derived构造函数中,您将Base构造函数调用为
Derived(int v):Base(v){...};
Run Code Online (Sandbox Code Playgroud)
无论是否显式执行,都会在调用大多数派生类的构造函数之前调用基类的构造函数.默认情况下,将调用默认构造函数.如果您想要其他一些行为,请在初始化列表中执行:
class Base {
protected:
explicit Base(int) {}
};
class Derived : public Base {
public:
Derived() : Base(42) // <-- call to base constructor
{ }
};
Run Code Online (Sandbox Code Playgroud)