c++ 析构问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 01:29:43
#include<iostream.h>
class example
{
public:
example(int n)
{
i=n;
cout<<"Constructing\n";
}
exapmle()
{
cout<<"Destructing\n";
}
int get_i()
{
return i;
}

private:
int i;
};
int sqr_it(example o)
{
rerurn o.get_i()* o.get_i();
}
main()
{
example x(10);
cout<<x.get_i()<<endl;
cout<<spr_it(x)<<endl;
return 0;
}

为什么 要析构2次呢? 是哪个2次呢? 不是只撤消一个 X对象吗

cout<<spr_it(x)<<endl; 调用函数sqr_it的时候,发生了拷贝,等这个函数结束后,临时变量被析构。

改成:

int sqr_it(example &o) 就不会有拷贝了。

up