1.注意
调用构造函数和析构函数时,需注意调用的时间和调用顺序
一般,调用析构函数的次序与调用构造函数次序正好相反
对象可以在不同的作用域中定义,可以有不同的存储类别。这些会影响调用构造函数和析构函数的时机。
2.调用构造函数和析构函数小结
- 在全局范围中定义的对象,它的构造函数在文件中的所有函数(包括main函数)执行之前调用。但如果一个程序中有多个文件,而不同的文件中都定义了全局对象,则这些对象的构造函数的执行顺序是不确定的。当main函数执行完毕或调用exit函数时(此时程序终止),调用析构函数。
- 如果定义的是局部自动对象(例如在函数中定义对象),则在建立对象时调用其构造函数。在函数调用结束、对象释放时先调用析构函数。
- 如果在函数中定义静态(static)局部对象,则只在程序第一次调用此函数建立对象时调用构造函数一次,在调用结束时对象并不释放,因此也不调用析构函数,只在main函数结束或调用exit函数结束程序时,才调用析构函数。