【发布时间】:2021-08-30 14:01:33
【问题描述】:
我有以下代码:
#include <iostream>
using namespace std;
class A {
public:
A() { cout << "A"; }
A(const A&) { cout << "a"; }
};
class B : public virtual A {
public:
B() { cout << "B"; }
B(const B&) { cout << "b"; }
};
class C : public virtual A {
public:
C() { cout << "C"; }
C(const C&) { cout << "c"; }
};
class D : B, C {
public:
D() { cout << "D"; }
D(const D&) { cout << "d"; }
};
我想创建一个D 对象并让它打印"ABCDabcd"。
我试过了:
int main()
{
D d;
return 0;
}
但它只打印"ABCD",我不知道如何调用其余代码。
有什么想法吗?
【问题讨论】:
-
是的,我确定“ABCDabcd”
-
我可以看出“ABCD”部分是为了演示构造函数。我没有看到任何应该导致“abcd”部分的东西(这就是我考虑析构函数的原因)。所以请解释一下“我想打印“ABCDabcd””对于你想要实现的实际目标意味着什么。 IE。为什么
cout << "ABCDabcd";不是答案?小写字母输出是什么意思?我怀疑它们应该通过投射来触发,但main()或其他地方似乎没有任何东西能够触发它。 -
我怀疑部分显示的代码是“不可编辑的”,而部分是您的作业“可编辑”的,请解释一下。
-
查看您的代码并了解如何打印
ABCD。一旦你理解了这一点,看看什么类似的事情会导致abcd被打印出来。例如,是什么导致a被打印? -
为什么
cout << "ABCDabcd";不是答案?我想你忘了解释一些规则......
标签: c++ class oop constructor virtual-functions