一.代码
class Base
{
public:
Base()
{
cout << "Base" << endl;
}
~Base()
{
cout << "~Base" << endl;
}
private:
char str[100];
};
void main()
{
cout << "..sss.." << endl;
Base b, *pa, d[1];
while (true);
}
执行结果:
二.结果分析
有执行结果可知,Base b, *pa, d[1]都不会触发析构函数产生结果,因为他们并没有delete空间,而Base b会去调用类Base的无参构造函数,Base *pa由于是指针,并没开辟内存,故而不会去调用类Base的无参构造;Base d[1]和int arr[1]其实一样的,就是定义了一个长度为1的Base类型的数组,故而他会调用一次Base的构造函数。