| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 441 人关注过本帖
标题:继承的运行结果
只看楼主 加入收藏
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
快速回复:继承的运行结果
数据加载中...
 
   



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

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