new和delete操作符重载
来源:互联网 发布:淘宝司法拍卖有抵押 编辑:程序博客网 时间:2024/05/17 01:10
- #include <iostream>
- #include <new>
- using namespace std;
- class MemoryPool
- {
- };
- class MemoryObject
- {
- private:
- MemoryPool* aPool;
- public:
- MemoryObject(MemoryPool* p)
- {
- aPool = p;
- };
- void* operator new(size_t);
- static void* operator new(size_t, int i);
- };
- void* MemoryObject::operator new(size_t)
- {
- return NULL;
- }
- void* MemoryObject::operator new(size_t,int i)
- {
- return NULL;
- }
- void main()
- {
- MemoryPool aPool;
- void* p = new MemoryObject(&aPool);
- if (p==NULL)
- {
- cout<<"NULL p"<<endl;
- }
- void* p2 = new(3) MemoryObject(&aPool);
- if (p2==NULL)
- {
- cout<<"NULL p2"<<endl;
- }
- };
在编写内存池代码的时候,遇到这个问题,遂解决之。
参考:http://kuapig.ycool.com/post.2726735.html
下面是一个稍微复杂一点的例子:注意,重载了new以后,没有执行构造函数。
- #include <iostream>
- #include <new>
- using namespace std;
- class MemoryPool;
- class MemoryObject
- {
- public:
- const MemoryPool* aMemPool;
- public:
- MemoryObject(const MemoryPool* obj):aMemPool(obj)
- {
- }
- static void* operator new(size_t,int a,int b)
- {
- return NULL;
- }
- };
- class MemoryPool
- {
- public:
- int i;
- MemoryPool():i(98){};
- };
- void main()
- {
- MemoryPool aMemPool;
- MemoryObject aMemObj(&aMemPool);
- cout<<(aMemObj.aMemPool)->i<<endl;
- void * p = new(3,5) MemoryObject(&aMemPool);
- if (p==NULL)
- {
- cout<<"asdsadsa"<<endl;
- }
- }
明白了new重载的道理,我们在new MemoryObject对象的时候,就知道如何将底层的实现送给MemoryPool的Alloc函数处理了,最后的返回值,实际上是MemoryPool处理后返回的。
- 重载new 和 delete 操作符
- new和delete操作符重载
- 重载new和delete操作符
- 【重载new和delete操作符】
- 操作符重载 new delete
- 重载new / delete 操作符
- new和delete符重载
- vc中new和delete操作符的重载
- vc中new和delete操作符的重载(参考资料)
- C++的new 和 delete 操作符重载。
- CNoTrackObject类 和new delete操作符的重载
- C++ 笔记,重载new , delete 操作符
- C++ new/delete操作符重载
- 重载new 和 delete
- 重载new和delete
- new 和 delete 重载
- new和delete重载
- new和delete重载
- PHP语法学习1——安装开发环境
- JavaScript就这么回事(1)
- asp.net 2005 调用js日历控件的位置偏移问题
- 韩国的生意难做
- SaaS架构设计之共享设备
- new和delete操作符重载
- Oracle10g出现两个监听进程的故障 tnslsnr listener -inherit
- 用户控件传值
- 正试图在 OS 加载程序锁内执行托管代码
- 内存池详解(2)
- mysql热复制的资料与常用语句
- Hibernate缓存机制
- 一个月以后看JAVA
- 漫谈社会智力再转移