C++中的构造和析构的次序
时间: 2024-04-12 10:31:49 浏览: 21
在C++中,对象的构造和析构的次序是按照对象的声明顺序来确定的。具体地说,当创建一个对象时,首先会调用构造函数进行对象的初始化,然后按照声明顺序依次调用成员变量的构造函数。当对象被销毁时,首先会调用成员变量的析构函数,然后再调用对象自身的析构函数。
例如,考虑以下代码:
```cpp
class A {
public:
A() { cout << "A constructor" << endl; }
~A() { cout << "A destructor" << endl; }
};
class B {
public:
B() { cout << "B constructor" << endl; }
~B() { cout << "B destructor" << endl; }
};
class C {
public:
C() { cout << "C constructor" << endl; }
~C() { cout << "C destructor" << endl; }
};
class D {
public:
D() { cout << "D constructor" << endl; }
~D() { cout << "D destructor" << endl; }
};
class MyClass {
public:
MyClass() { cout << "MyClass constructor" << endl; }
~MyClass() { cout << "MyClass destructor" << endl; }
private:
A a;
B b;
C c;
D d;
};
int main() {
MyClass obj;
return 0;
}
```
输出结果将会是:
```
A constructor
B constructor
C constructor
D constructor
MyClass constructor
MyClass destructor
D destructor
C destructor
B destructor
A destructor
```
可以看到,构造函数的调用顺序是按照成员变量的声明顺序,而析构函数的调用顺序则是与构造函数的调用顺序相反。