标题:继承的运行结果
只看楼主
jjg
Rank: 2
等 级:论坛游民
帖 子:67
专家分:42
注 册:2009-8-19
结帖率:46.15%
已结贴  问题点数:20 回复次数:6 
继承的运行结果
继承的运行结果

#include <iostream>
using namespace std;
class data
{
public:
    data(int x)
     {
      data::x=x;
cout<<"data cons."<<endl;
     }

~data(){cout<<"data des."<<endl;}
private:
int x;
};
class base
{
public:
base(int x):d1(x){cout<<"base cons."<<endl;}
~base(){cout<<"base des"<<endl;}
private:
data d1;
};
class derived:public base
{
public:
derived(int x):base(x),d2(x){cout<<"derived cons."<<endl;}
~derived(){cout<<"derived des."<<endl;}
private:
data d2;
};
void main()
{
derived obj(5);
}
结果是这样的:
data cons.//搞不懂怎么会有这行结果
base cons.   
  data cons.
derived cons.
derived des.
data des.
base des.
data des.
我在书上看到这句话:对于派生类的构造函数,在定义对象时构造函数的执行顺序:先执行基类的构造函数,在执行子对象的构造函数,最后执行派生类本身的构造函数。我就搞不懂子对象的构造函数指的是什么呢?能不能用上面那个例子解释一下??

[ 本帖最后由 jjg 于 2009-8-26 10:29 编辑 ]
搜索更多相关主题的帖子: 继承 
2009-08-23 16:30
rockcjw
Rank: 2
等 级:论坛游民
帖 子:28
专家分:32
注 册:2009-8-23
得分:7 
为什么你这个我用vc++6.0运行的时候有错误啊。
derived(int x):base(x){cout<<"derived cons."<<endl;}
提示 error C2512: 'data' : no appropriate default constructor available
2009-08-23 17:38
rockcjw
Rank: 2
等 级:论坛游民
帖 子:28
专家分:32
注 册:2009-8-23
得分:0 
我去掉
private:
data d2;

 结果是这个
data cons.
base cons.   
derived cons.
derived des.
base des.
data des.

2009-08-23 17:48
blueskiner
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:227
专家分:707
注 册:2008-9-22
得分:7 
子对象就是data在你派生类中的实例对象。关于怎么会有那句语句,这完全是出于编译器的需要,你要实例派生类的对象,就必须把对象里的成员初始化,而某些成员特定的数据类型,需要根据实际情况调用构造函数构造对象。
2009-08-24 05:52
jjg
Rank: 2
等 级:论坛游民
帖 子:67
专家分:42
注 册:2009-8-19
得分:0 
回复 4楼 blueskiner
子对象的构造函数,基类的构造函数,还有一个派生类本身的构造函数,到底指的是哪一个呢?特别是搞不懂子对象的构造函数..
2009-08-24 20:00
jjg
Rank: 2
等 级:论坛游民
帖 子:67
专家分:42
注 册:2009-8-19
得分:0 
回复 2楼 rockcjw
是啊,那我再编辑一下
2009-08-26 10:27
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
盖房子,先打地基,再码墙,最后是房顶;拆的过程相反。。。

学习需要安静。。海盗要重新来过。。
2009-08-26 19:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-283512-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.194846 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved