注册 登录
编程论坛 C++教室

运行结果

jjg 发布于 2009-08-23 16:55, 435 次点击
程序代码:
#include <iostream>
using namespace std;
class base
{
public:
base(int i)
{
x=i;
cout<<"constructor of base."<<endl;
}
~base(){cout<<"destructor of base."<<endl;}
viod show(){cout<<"x="<<x<<endl;}
private:
int x;
};
class derived:public base
{

public:
derived(int i):base(i),d(i){cout<<"constructor of derived."<<endl;}
private:
base d;
};
void main()
{
derived obj(5);
obj.show();
}




运行结果:
constructor of base.
constructor of base.//怎么有两遍?不懂
constructor of derived.
x=5
destructor of base.
destructor of base.
4 回复
#2
lintaoyn2009-08-23 17:11
derived(int i):base(i),d(i)等于derived(int i):base(i){...}加derived(int i):d(i){...}
#3
rockcjw2009-08-23 17:53
derived(int i):base(i),d(i){cout<<"constructor of derived."<<endl;}
这句给X赋了两次值 所以会出现两次cons  结果也出现了两次des
#4
flyingcloude2009-08-23 18:46
derived(int i):base(i),d(i){cout<<"constructor of derived."<<endl;}
derived(int i):base(i)是子类的构造函数显示调用基类的构造函数,打印一次constructor of base.
d(i) 是derived中的base d进行初始化,所以调用构造函数base(int i) ,又打印一次constructor of base.
#5
ly8610142009-08-23 22:15
回复 楼主 jjg
4楼正解
1