从子类调用父类(super class)构造函数的C++规则是什么?
例如,我知道在Java中,您必须作为子类构造函数的第一行来执行此操作(如果不这样做,则假定对no-arg 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
}
};
有关构造函数的初始化列表here和here的更多信息。
关于c++ - 调用父类(super class)构造函数的规则是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60960854/