C++ 构造函数的构造顺序和析构函数的析构顺序

三个类A,B,C。B是A的子类,C又是B的子类。代码如下:

class A  
{  
public:  
    A(){ cout << "new A " << endl; }
    ~A(){cout << "delete A" << endl;}  
};    
class B : public A  
{  
public:  
   B(){cout << "new B " << endl;};
   ~B(){cout << "delete B" << endl;};  
};  

class C : public B  
{  
public:  
   C(){cout << "new C " << endl;}
   ~C(){cout << "delete C" << endl;};
};

以下是测试代码以及输出的结果:

第一个(p1)就不用说了,new一个A,然后再delete;

第二个(p2)new了一个C,构造函数从C的祖先开始向下构造,析构的时候在从C开始向上构造;

第三个(p3) (和第四个类似,直接参考第四个);

第三个(p3)new了一个C,构造函数从C的祖先开始向下构造,然后赋给指针p4,但是p4是B型的,所以new出的类饮食转换为B类型,所以析构的时候是从B开始向上构造。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值