在这个对象的作用域最后.. 比如你在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是全局对象..那么就在程序末尾释放
显式的调用很少见..我就不举例了..
析构函数与对象作用域
776

被折叠的 条评论
为什么被折叠?



