码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-09-22 23:34:43      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   ar   for   div   sp   

【本文链接】

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)

标签:des   style   blog   http   color   ar   for   div   sp   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!