您的位置:首页 > 编程语言 > C语言/C++

C++局部对象的析构

2015-11-01 20:14 274 查看
class A
{
public:
A Func();
......
}
A A::Func()
{
A temp;
......
return temp;
}


类A的成员函数Func()返回了一个局部变量。

在执行到return temp语句时

1.先调用一次拷贝构造函数复制一个temp的临时副本_temp,返回的对象是该副本;

2.然后调用析构函数析构temp;

3.当调用Func()的语句执行完毕后,会再次调用析构函数析构_temp;

如果类中有指针成员使用了动态分配内存,就需要重写拷贝构造函数,因为默认拷贝构造函数只是浅拷贝,temp和_temp的指针成员指向的是同一块内存,然后析构temp和_temp时,同一块内存会被析构两次,此时程序就会出错;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息