我在这里的预期输出是“ bc bvfunc b(1)dc dvfunc”,但我得到了类似“ b(1)dc dvfunc”的输出,为什么会这样?有人可以帮我吗?感谢您的宝贵时间!
#include<iostream>
using namespace std;
class b {
public:
b() {
cout<<" bc ";
b::vfunc();
}
virtual void vfunc(){ cout<<" bvfunc "; }
b(int i){ cout<<" b(1) "; }
};
class d : public b {
public:
d(): b(1) {
cout<<" dc ";
d::vfunc();
}
void vfunc(){ cout<<" dvfunc"; }
};
main()
{
d d;
}
最佳答案
要获得所需的输出,您需要
d(){b(1); //move b(1) from initializer list and put it in a constructor.
cout<<" dc ";
在构造函数调用默认值之前,FYI
initializer list
用于initialize
类的成员。构造函数可以覆盖这些值。