Chinaunix首页 | 论坛 | 博客
  • 博客访问: 110788
  • 博文数量: 40
  • 博客积分: 1650
  • 博客等级: 上尉
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-20 13:05
文章分类
文章存档

2011年(1)

2009年(1)

2008年(1)

2007年(37)

我的朋友

分类: C/C++

2007-08-05 12:18:07

下面这段程序中,D类是从B类和C类派生来的,而B类和C类又都是从A类派生的,那么构造函数和析构函数的调用顺序的调用顺序如何?
#include
class A
{
    public:
      A()
      {
        cout<<"a\n";
      }
    int n;
};

class B:public A
{
   public:
    B()
    {
      cout<<"b\n";
    }
 } ;

class C:public A
{
   public:
    C()
    {
      cout<<"c\n";
    }
};

class D:public B,public C
{
   public:
     D()
     {
       cout<<"d\n";
     }
};

void main()
{
   D d;
   d.B::n=100;
   d.C::n=200; 
   cout<   cin.get();
}
显示结果:
a
b
a
c
d
100,200
如果是虚基类继承呢?看下面的程序:
#include
class A
{
   public:
    A()
    {
      cout<<"a\n";
    }
    int n;
};

class C:virtual public A
{
  public:
   C()
   {
      cout<<"c\n";
   }
};

class B:virtual public A
{
   public:
    B()
    {
      cout<<"B\n";
    }
 } ;

class D:virtual public B,virtual public C
{
   public:
    D()
    {
      cout<<"d\n";
    }
};

void main()
{
   D d;
   d.B::n=10;
   d.C::n=20;
   cout<   cin.get();
}
运行结果:
a
b
c
d
20,20
通过这两个例子应该对构造函数和析构函数的调用顺序的调用顺序有所了解了吧
阅读(1149) | 评论(2) | 转发(0) |
0

上一篇:面试题整理

下一篇:linux--cut命令介绍

给主人留下些什么吧!~~

chinaunix网友2009-09-14 10:41:54

看不懂