考虑下面的代码段:C++构造奥德
#include<iostream>
using namespace std;
class cls
{
public:
cls(int i=0) {cout<<" c1 ";}
~cls() {cout<<" d 1 ";}
};
class cls2
{
cls xx;
public:
cls1(int i=0){cout<<" c2 ";}
~cls1(){cout<<" d2 ";}
}c;
class cls3
{
cls2 xx; cls xxx;
public:
cls2(int i=0) {cout<<" c3 ";}
~cls2(){ cout<<" d3 ";}
};
int main()
{
cls3 s;
return 0;
}
现在,当我运行它,它输出:
C1 C2 C1 C2 C1 C3 D3 D1 D2 D1 D2 D1
,我似乎无法找出为什么,在我的头上,它应该输出:
C1,C2,C1〜C3均D3 D1 D2 D1
因为:
cls2 s -> cls1 xx -> cls xx => c1
=> c2
-> cls xxx => c1
=> c3
我知道的地方,我的逻辑是有缺陷的,但我不知道在哪里。
请使用一致的名称和值! cls1应该打印c1和d1。 – vz0
不确定你的逻辑,但你的命名约定是有缺陷的。我发现混淆了'cls2'打印'c3',而'cls1'打印'c2'。 – user463035818
您能否让演示文稿不那么呆板和莫名其妙? –