谁能告诉我为什么基类的构造方法被调用了两次?
#include <iostream>
using namespace std;
class A{
public:
A(){
cout << "default constructor of base class" << endl;
}
};
class B:public A{
public:
B(){
A();
cout << "default constructor of derived class" << endl;
}
};
int main(int argc, char **argv){
B b;
return 0;
}
我得到了这个意想不到的结果:
default constructor of base class
default constructor of base class
default constructor of derived class
最佳答案
一旦在 main
中构建了 B
对象的基础子对象:
B b;
一旦在 B
的构造函数中构造了临时的 A
对象:
A();
也许您打算初始化A
子对象;在初始化列表中执行此操作,而不是构造函数主体:
B() : A() {
cout << "default constructor of derived class" << endl;
}
尽管在这种情况下,这样做与完全不使用它的效果完全相同。
关于c++ - 为什么基类的构造方法被调用了两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297267/