如何设计只在堆或者栈上实例化的类 - 阿黎的C 小屋 - CSDNBlog

来源:百度文库 编辑:神马文学网 时间:2024/04/28 06:16:43
如何设计只在堆或者栈上实例化的类
只在堆上创建的方法如下:
class HeapOnly {
private:
HeapOnly() {}
public:
static HeapOnly* Create()
{
return new HeapOnly();
}
};
eg:
HeapOnly* ho = HeapOnly::Create();
delete ho;
要实现只在栈上创建对象,那么要求程序中不能动态创建(new)。
如此说来,我们只需重载new运算符。做法如下:
class StackOnly
{
private:
void * operator new(size_t Size)
{
}
void operator delete(void * ptr)
{
}
};
int main()
{
StackOnly obj1;//OK
//StackOnly *pobj2=new StackOnly();//Error!
return 0;
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=660460