从派生类调用基类构造函数的 C++ 规则是什么?
例如,我知道在 Java 中,您必须将其作为子类构造函数的第一行(如果不这样做,则假定隐式调用无参数的超级构造函数 - 如果缺少,则会出现编译错误) .
如果它们没有参数,则会自动为您调用基类构造函数。如果要调用带参数的超类构造函数,则必须使用子类的构造函数初始化列表。与 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 } };
此处和此处有关构造函数初始化列表的更多信息。