c++中类的问题 构造函数和析构函数

输出是 0011
为什么不是0101
我感觉是0101啊

#include<iostream>
using namespace std;
class TEST
{ 
    int num; 
public:
    TEST( int num=0); 
    void increment( ) ;
    ~TEST( );
}; 
TEST::TEST(int num) : num(num)
{
    cout << num  << endl; 
} 
void TEST::increment() 
{
    num++;
}
TEST::~TEST( )
{
    cout << num  << endl;
} 
int main( ) 
{
    TEST array[2]; 
    array[0].increment();
    array[1].increment();
    return 0;
}



构造函数是申请资源并创建类的对象 析构函数是释放类对象和相关资源的,所以你要释放它们要等它们构造完之后,所以先构造输出两个0,再析构输出两个1。
array[0].increment(); 先通过构造函数输出1个0
**array[1].increment();**也通过构造函数输出1个0
构造函数与析构函数调用顺序相反
之后array[1]部分先析构 输出1个1
最后array[0]部分再析构 输出1个1
所以结果是 0011

希望对题主有所帮助,可以的话,帮忙点个采纳!

怎么可能是0101呢?TEST array[2]就会调用两次TEST类的构造函数,由于没有传递构造函数参数,那么num就会默认是0啊
然后各自调用increment函数,使得num加1,最后调用析构函数时会输出num,所以输出两个1