C++ 继承关系中构造函数的调用顺序
On 2010-07-22 01:48:15 By SoliC++ 继承关系中构造函数的调用顺序
如果A为基类,B继承自A,C继承自B和A,那么在实例化C时,它们各自的构造函数的调用顺序是什么?
一般性规则:
- 在调用构造函数前先调用父类的构造函数;
- 如果是多重继承,调用父类构造函数的顺序是自左向右;
- 此子而父递归以上两条。
如下代码:
/**
* 继承关系中,构造函数的调用顺序及调用次数
*
* A
* /|
* B |
* \|
* C
*/
#include <stdio.h>
class A
{
public:
A() { puts("A"); }
virtual ~A(){}
};
class B : public A
{
public:
B() { puts("B"); }
virtual ~B(){}
};
class C : public B, public A
{
public:
C() { puts("C"); }
virtual ~C(){}
};
int main()
{
C c;
return 0;
}
结果如下:
A
B
A
C
Except where otherwise noted, content on this site is licensed under a
Creative Commons Attribution 4.0 International license
.