我在主程序中定义了五个用户自定义对象,如下:
它们的析构函数调用顺序是否有特定的顺序?比如说按照如下定义顺序:
Student s1;
Student s2;
Student s3;
Student s4;
Student s5;
s5的析构函数会先被调用还是s1的?
我在主程序中定义了五个用户自定义对象,如下:
它们的析构函数调用顺序是否有特定的顺序?比如说按照如下定义顺序:
Student s1;
Student s2;
Student s3;
Student s4;
Student s5;
s5
, s4
, s3
, s2
, s1
的顺序被调用。这是一个普遍规律:如果两个对象的生命周期重叠,那么先构造的对象会最后被自动销毁。当然,这并不适用于动态存储期对象,它们不会自动销毁。(例如,使用 new
创建的对象在调用 delete
时被销毁。)College
的类的数据成员,并按照这个顺序依次声明(首先是s1,最后是s5),那么析构函数的调用顺序是什么? - Tim Southee是的,销毁顺序始终与构造顺序相反。
请查看以下代码。
class Base
{
public:
Base ( )
{
cout << "Inside Base constructor" << endl;
}
~Base ( )
{
cout << "Inside Base destructor" << endl;
}
};
class Derived : public Base
{
public:
Derived ( )
{
cout << "Inside Derived constructor" << endl;
}
~Derived ( )
{
cout << "Inside Derived destructor" << endl;
}
};
void main( )
{
Derived x;
}
Inside Base constructor
Inside Derived constructor
Inside Derived destructor
Inside Base destructor