Some small cases, but sometime important!
- 析构函数用protected修饰
#include <stdio.h>
class A{
protected:
~A(){}
};
int main(int argc, char *argv[])
{
A a;//会提示出错
A* P=new a();//正常
return 0;
}析构函数用protected修饰时禁止在栈中产生对象,只能在堆中产生对像,这点很重要。
对于堆中的对象,我们通常用new/delete来创建/销毁。当调用new时,它会自动去调用相应类的构造函数。同样,当调用delete时,它会自动去调用相应类的析构函数。当我们在栈中产生对象时,前面说的过程是自动完成的。即:不需要我们显式调用new/delete。这里有个前提:类的构造/析构都是public的。就是说,栈对象在程序运行结束后会 自动释放,释放的时候会调用析构函数。
所以:如果析构函数是私有的 编译不能通过。 -
作者:DylanWind
出处:http://www.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。