*********构造函数调用顺序示例***********创建Base基类。创建Child派生类。*********析构函数调用顺序示例***********删除Child派生类。删除Base基类。
时间: 2024-06-25 13:00:15 浏览: 102
在C++中,构造函数和析构函数的调用顺序是这样的:
**构造函数调用顺序示例**:
1. 创建派生类`Child`时,首先会调用`Base`的构造函数(如果`Child`继承自`Base`)。
2. 然后,`Child`类自身的构造函数会被调用,它会接着执行基类构造函数之后的初始化过程。
```cpp
class Base {
public:
Base() { std::cout << "Base constructor called.\n"; }
};
class Child : public Base {
public:
Child() { std::cout << "Child constructor called after Base.\n"; }
};
// 创建Child对象时的构造函数调用顺序
Child obj; // 输出: Base constructor called. Child constructor called after Base.
```
**析构函数调用顺序示例**:
1. 当删除`Base`对象时,`Base`的析构函数会被调用。
2. 接着,`Child`对象的析构函数会在`Base`析构函数之后被调用,因为`Child`继承自`Base`,所以`Child`会先析构,再析构其基类。
```cpp
// 删除Child对象,然后Base对象
delete &obj; // 先析构Child,然后析构Base
```
输出将是相反的顺序(假设没有其他析构函数输出):
```
Child destructor called.
Base destructor called.
```
阅读全文