从派生类调用基类构造函数的 C++ 规则是什么?
例如,我知道在 Java 中,您必须将其作为子类构造函数的第一行(如果不这样做,则假定隐式调用无参数 super 构造函数 - 如果出现编译错误,则会出现编译错误不见了)。
最佳答案
如果没有参数,则会自动为您调用基类构造函数。如果要调用带参数的父类(super class)构造函数,则必须使用子类的构造函数初始化列表。与 Java 不同,C++ 支持多重继承(无论好坏),因此必须通过名称引用基类,而不是“super()”。
class SuperClass
{
public:
SuperClass(int foo)
{
// do something with foo
}
};
class SubClass : public SuperClass
{
public:
SubClass(int foo, int bar)
: SuperClass(foo) // Call the superclass constructor in the subclass' initialization list.
{
// do something with bar
}
};
关于c++ - 调用基类构造函数的规则是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/120876/