#include<iostream>
using namespace std;
class Bace
{
protected:
Bace(){cout<<'A';}
Bace(char c){cout<<c;}
};
class Derived:public Bace
{
public:
Derived(char c)
{
cout<<c;}
};
int main()
{
Derived d1('B');
return 0;
}
为什么会是BB呢?你的Drivered(char c)并没有调用基类的Bace(char c)构造函数,所以只调用了默认的无参构造函数,想输出BB,你得这么写:
Drivered(char c) : Bace(c)
{
cout<<c;
}
因为Derived继承Bace,创建对象自动调用Bace的无参数方法,输出A
我的理解是:
Derived继承自Bace,当定义Derived对象时,也会调用父类的构造函数;
因此应该是先输出A,然后再输出传入的参数B吧!!!
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632