首页 > 其他 > 详细

如何限制一个类只在堆上分配和栈上分配(StackOnly HeapOnly)

时间:2014-09-22 22:59:14      阅读:388      评论:0      收藏:0      [点我收藏+]

【本文链接】

http://www.cnblogs.com/hellogiser/p/stackonly-heaponly.html

【题目】

如何限制一个类只在堆上分配和栈上分配?

【代码】

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
class StackOnly
{
private:
    
void *operator new(size_t size) {};
};

class HeapOnly
{
public:
    
void destroy();
private:
    HeapOnly() {};
    ~HeapOnly() {};
};

【分析】

前者利用了c++的重载机制+访问控制机制。后者利用了c++的访问控制机制。
前者重载了new运算符,并设为私有,因此,当用 new stackonly;时编译器就会报错。
后者则将构造函数设为私有,因此,当你 heaponly h;时会自动调用构造函数,这时编译器也会报错。

这种技巧在c++中是很常用的比如设计模式中的单件模式。

【参考】

http://blog.csdn.net/wonengxing/article/details/6862971

如何限制一个类只在堆上分配和栈上分配(StackOnly HeapOnly)

原文:http://www.cnblogs.com/hellogiser/p/stackonly-heaponly.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!