在此处查看此代码:
class test
{
int n;
int *j;
public:
test(int m)
{
n = 12;
j = new int;
cin >> *j;
}
void show()
{
cout << n << ' ' << *j << endl;
}
~test()
{
delete j;
}
};
int main()
{
test var = 123;
var.show();
return 0;
}
在这个程序中,编译器应该抱怨重复删除j
. 第一次删除是在临时对象temporary(123)
被销毁时完成的。第二次删除是在var
对象被销毁时完成的。但这工作正常吗?
这是否意味着临时对象不调用析构函数?