免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 各类编程 > 为什么有时类的析构函数要定义为protected呢?

为什么有时类的析构函数要定义为protected呢?

时间:2011-10-21 16:11来源: 整理:寂涯网络 点击:

 

对于堆中的对象,我们通常用new/delete来创建/销毁。当调用new时,它会自动去调用相应类的构造函数。同样,当调用delete时,它会自动去调用相应类的析构函数。当我们在栈中产生对象时,前面说的过程是自动完成的。即:不需要我们显式调用new/delete。这里有个前提:类的构造/析构都是public的。

 

然而,当我们想禁止在栈中产生对象时,如何来实现呢?

 

将构造函数设为private行吗?no!这样对象虽然不能在栈中产生,但同样也不能在堆中产生了。

 

将析构函数设为private行吗?bad!这样虽然限制了栈对象,但同时也限制了继承。

 

将析构函数设为protected行吗?yes!

 

例如:

 

class A

 

{  

 

protected:   

 

           A() { }

 

    ~A() { }  

 

public:   

 

         static A* create()

 

   {    return new A() ;//调用保护的构造函数   }   

 

         void destroy()   

 

         {    delete this ;//调用保护的析构函数   }

 

};

 

我们可以这样来使用它:

 

A* pa= A::create();

 

pa->destroy() ;

摘自:huzzyy的专栏

本页地址 http://www.jybase.net/biancheng/20111018115.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com