stand on the shoulders of giants

Some small cases, but sometime important!

  1. 析构函数用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的。就是说,栈对象在程序运行结束后会 自动释放,释放的时候会调用析构函数。
    所以:如果析构函数是私有的 编译不能通过。

  2.  

posted @ 2009-07-15 15:41  DylanWind  阅读(278)  评论(0编辑  收藏  举报