为什么有时类的析构函数要定义为protected呢?
来源:互联网 发布:网吧软件市场规模 编辑:程序博客网 时间:2024/06/07 14:03
对于堆中的对象,我们通常用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() ;
- 为什么有时类的析构函数要定义为protected呢?
- 为什么有时类的析构函数要定义为protected呢?
- 为什么有时类的析构函数要定义为protected呢?
- 为什么有时类的析构函数要定义为protected呢?
- 为什么有时类的析构函数要定义为protected呢?
- C++中为什么有时基类的析构函数必须写为虚函数
- 为什么析构函数要定义为虚函数
- 在C++中,为什么有时析构函数必须写为虚函数
- 为什么基类的析构函数定义为虚函数?
- 为什么基类的析构函数定义为虚函数
- 为什么定义类的时候,一定要让它的析构函数为虚的?
- 为什么定义类的时候,一定要让它的析构函数为虚的?
- 为什么定义类的时候,一定要让它的析构函数为虚的?
- 构造函数定义为private,protected的好处
- 为什么析构函数定义为虚函数
- 构造函数定义为private,protected 与 一道面试题:只能实例化一次的类
- 构造函数为什么不能为虚函数 & 基类的析构函数为什么要为虚函数
- JAVA里面main函数为什么要定义为static的?
- 《潜伏》台词
- 都有
- Oracle 10G里手工建库的全过程
- 通用双向链表
- Hannah Montana: Spotlight World Tour PS2
- 为什么有时类的析构函数要定义为protected呢?
- Toy Story Mania!(PC)
- Wubi安装Ubuntu11.10下载AMD64.tar.xz无限等待 完美解决!
- 结婚答谢词
- 在内核中新增驱动代码目录
- 本Blog独立站点米豆网开通了
- Windows 8 操作系统入门
- 飞瀑
- 对Makefile、Kconfig与.config文件的再次理解