多继承时,构造函数和析构函数的执行顺序
时间: 2023-09-13 11:12:41 浏览: 103
构造函数,析构函数的定义和执行顺序-C++学习笔记
在多继承的情况下,构造函数和析构函数的执行顺序是按照派生类中基类的声明顺序来确定的。具体来说:
1. 构造函数的执行顺序
派生类的构造函数首先会调用基类的构造函数,而基类的构造函数则是按照基类在派生类中的声明顺序依次执行的,不受访问权限影响。如果一个基类被多次继承,那么它的构造函数也会被多次调用。
示例代码如下:
```c++
class A {
public:
A() {
cout << "A constructor" << endl;
}
};
class B {
public:
B() {
cout << "B constructor" << endl;
}
};
class C : public A, public B {
public:
C() {
cout << "C constructor" << endl;
}
};
int main() {
C obj;
return 0;
}
```
输出结果为:
```
A constructor
B constructor
C constructor
```
2. 析构函数的执行顺序
派生类的析构函数也会调用基类的析构函数,而基类的析构函数则是按照基类在派生类中的声明顺序倒序执行的,与构造函数的执行顺序相反。如果一个基类被多次继承,那么它的析构函数也会被多次调用。
示例代码如下:
```c++
class A {
public:
~A() {
cout << "A destructor" << endl;
}
};
class B {
public:
~B() {
cout << "B destructor" << endl;
}
};
class C : public A, public B {
public:
~C() {
cout << "C destructor" << endl;
}
};
int main() {
C obj;
return 0;
}
```
输出结果为:
```
C destructor
B destructor
A destructor
```
阅读全文