找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 304|回复: 6

继承的运行结果

[复制链接]
发表于 2009-11-6 01:25:30 | 显示全部楼层 |阅读模式 IP:江苏扬州
继承的运行结果

#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.
我在书上看到这句话:对于派生类的构造函数,在定义对象时构造函数的执行顺序:先执行基类的构造函数,在执行子对象的构造函数,最后执行派生类本身的构造函数。我就搞不懂子对象的构造函数指的是什么呢?能不能用上面那个例子解释一下??
发表于 2009-11-6 01:25:32 | 显示全部楼层 IP:江苏扬州
为什么你这个我用vc++6.0运行的时候有错误啊。
derived(int x):base(x){cout<<"derived cons."<<endl;}
提示 error C2512: 'data' : no appropriate default constructor available
回复

使用道具 举报

发表于 2009-11-6 01:25:33 | 显示全部楼层 IP:江苏扬州
我去掉
private:
data d2;

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

使用道具 举报

发表于 2009-11-6 01:25:34 | 显示全部楼层 IP:江苏扬州
子对象就是data在你派生类中的实例对象。关于怎么会有那句语句,这完全是出于编译器的需要,你要实例派生类的对象,就必须把对象里的成员初始化,而某些成员特定的数据类型,需要根据实际情况调用构造函数构造对象。
回复

使用道具 举报

发表于 2009-11-6 01:25:35 | 显示全部楼层 IP:江苏扬州
回复 4楼 blueskiner
子对象的构造函数,基类的构造函数,还有一个派生类本身的构造函数,到底指的是哪一个呢?特别是搞不懂子对象的构造函数..
回复

使用道具 举报

发表于 2009-11-6 01:25:36 | 显示全部楼层 IP:江苏扬州
回复 2楼 rockcjw
是啊,那我再编辑一下
回复

使用道具 举报

发表于 2009-11-6 01:25:37 | 显示全部楼层 IP:江苏扬州
盖房子,先打地基,再码墙,最后是房顶;拆的过程相反。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 17:19 , Processed in 0.184722 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表