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

来源:互联网 发布:2017淘宝晚会直播 编辑:程序博客网 时间:2024/06/08 06:37
 

如果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
13classA
14{
15public:
16    A() {puts("A"); }
17    virtual~A(){}
18};
19
20classB : publicA
21{
22public:
23    B() {puts("B"); }
24    virtual~B(){}
25};
26
27classC : publicB, publicA
28{
29public:
30    C() {puts("C"); }
31    virtual~C(){}
32};
33
34intmain()
35{
36    C c;
37    return0;
38}

结果如下:

A
B
A
C

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

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

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