不懂为什么运行出来会有A,我算的答案是BB

#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