输出是 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