您的位置:首页 > 其它

big three三大函数:拷贝构造拷贝赋值析构函数

2016-11-16 11:49 162 查看
析构函数:


析构函数的调用:

      
在这个对象的作用域最后..

比如你在main里面声明了一个类A..那么~A()会在main结束时调用..
如果在自定义的函数f()里面声明了一个A  函数f结束的时候就会调用~A()

或者你delete 指向A的指针..
或者显式的调用析构函数


追问

也就是说在包含该对象的函数的末尾就会调用析构函数喽?


追答

是的....

局部的对象 在该对象声明的函数末尾被释放...

你可以看下作用域的定义..析构函数就是在对象的作用域的末尾释放

为了不误导人...我还是举个例子..

如果是
class A
{
....
}
void f()
{
A a;
//这种情况a的作用域就是整个函数 在f末尾释放
}
void f()
{
for(A a;a.yes();a++)//这里声明的是一个计数器a..(这种情况一般是迭代器)..
{
...
}
//这里是a作用域结束的时候 调用析构函数
}
void f()
{
A* p=new A;

delete p;//A作用域结束 调用析构
}

如果A是全局对象..那么就在程序末尾释放


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: