Impossible is nothing  
  爱过知情重醉过知酒浓   花开花谢终是空   缘份不停留像春风来又走   女人如花花似梦
公告
日历
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011
统计
  • 随笔 - 8
  • 文章 - 91
  • 评论 - 16
  • 引用 - 0

导航

常用链接

留言簿(4)

随笔分类(4)

随笔档案(8)

文章分类(77)

文章档案(91)

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

一个很BT的程序,但是有助于搞清楚构造和析构的基本概念,来,做做看,写出这个程序的结果来!

明天公布答案。

#include <iostream>

class B1
{
 public:
  B1(int i)
 {
  std::cout<<"constructing B1 "<<i<<std::endl;
 }
 ~B1()
 {
  std::cout<<"destructing B1"<<std::endl;
 }
};

class B2
{
 public:
  B2(int j)
 {
  std::cout<<"constructing B2 "<<j<<std::endl;
 }
 ~B2()
 {
  std::cout<<"destructing B2"<<std::endl;
 }
};

class B3
{
 public:
  B3()
 {
  std::cout<<"constructing B3 *"<<std::endl;
 }
 ~B3()
 {
  std::cout<<"destructing B3"<<std::endl;
 }
};

class C:public B2,public B1,public B3
{
 public:
  C(int a,int b,int c,int d):B1(a),memberB2(d),memberB1(c),B2(b){};
 private:
  B1 memberB1;
  B2 memberB2;
  B3 memberB3;
};

int main()
{
 C obj(1,2,3,4);
 return 0;
}

1、如果是继承的关系,则和被继承时生命的顺序有关,跟构造函数无关。在构造时会首先构造根基类,之后一次提高,直到最后的派生类。

2、调用每个类的构造函数时,会按照成员变量声明的顺序构造。

3、最后的派生类的构造函数体的内容是最后调用的,紧挨析构之前。

4、析构的顺序完全有构造相反,而且唯一。

先按照继承的顺序构造基类,也就是按照 B2,B1,B3 的顺序,然后再按照数据成员声明的顺序构造数据成员,也就是 memberB1,memberB2,memberB3 的顺序。
析构顺序与此相反。

posted on 2006-02-26 11:44 笑笑生 阅读(147) 评论(0)  编辑 收藏 引用 所属分类: C++语言

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


 
Copyright © 笑笑生 Powered by: 博客园 模板提供:沪江博客