C++继承关系中构造函数的调用顺序

 

如果A为基类,B继承自A,C继承自B和A,那么在实例化C时,它们各自的构造函数的调用顺序是什么?

一般性规则:

1. 在调用构造函数前先调用父类的构造函数

2. 如果是多重继承,调用父类构造函数的顺序是自左向右

3. 此子而父递归以上两条


如下代码:

01/**
02* 继承关系中,构造函数的调用顺序及调用次数
03*
04*   A
05* /|
06* B |
07* \|
08*   C
09*/
10
11#include <stdio.h>
12
13class A
14{
15public:
16    A() { puts("A"); }
17    virtual ~A(){}
18};
19
20class B : public A
21{
22public:
23    B() { puts("B"); }
24    virtual ~B(){}
25};
26
27class C : public B, public A
28{
29public:
30    C() { puts("C"); }
31    virtual ~C(){}
32};
33
34int main()
35{
36    C c;
37    return 0;
38}

结果如下:

A
B
A
C

---------------------------------------------

原文地址:http://cbug.cn/blog/2010/07/22/36.html

---------------------------------------------

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值