代理模式 Proxy
2015-07-09 22:39
399 查看
使用一个类来代理另一个类,如智能指针auto_ptr,对智能指针的操作,实际上是对代理的指针的操作
#include <IOSTREAM> using namespace std; template<class T> class auto_ptr{ public: explicit auto_ptr(T * p = 0){ preal = p; } auto_ptr(auto_ptr<T> & pother) :preal(pother.release()){ } T * release(){ //释放智能指针对其指针的拥有权,使preal = 0 T * pold = preal; preal = 0; return pold; } void reset(T * p = 0){ if(preal != p){ delete preal; preal = p; } } ~auto_ptr(){ delete preal; } T * get(){ return preal; } auto_ptr<T> & operator=(auto_ptr<T> & pother ){ if( &pother != this){ //pother != *this,没有重载!=符号,会出错 reset(pother.release()); } return *this; } private: T * preal; }; int main(int argc, char* argv[]) { auto_ptr<int> a(new int(5)); cout<<*a.get()<<endl; auto_ptr<int> b(a); // cout<<*a.get()<<endl; 出错,已经转移所有权至b cout<<*b.get()<<endl; a = a; b = b; // cout<<*a.get()<<endl; return 0; }
相关文章推荐
- Ubuntu下Sublime Text 3解决无法输入中文的方法
- Fragment的一些基础
- OSGEarth绘制Geometry:绘多边形(三)
- 1. JavaScript 基础
- 使用Oracle sqlldr 快速批量导入文本文件
- EHCache入门系列(二)–在工程中单独使用
- 深入理解JAVA的多态性[转]
- 黑马程序员——高新技术---Java基础语法-循环结构和跳转语句
- mongodb 的 scala 驱动 -> casbah
- XML Schema-based configuration
- 封装自定义控件的sdk(创建静态库static library)
- Zabbix基于Proxy分布式部署实现Web监控
- EHCache入门系列(一)–简介及配置
- LigerUi之Grid使用详解(二)——数据编辑(计算每列之和之类的)
- JAVA的第一天
- 【周末作业】2015.7.9 第一周 html作业及答案
- 如何用C#检查硬盘是否是固态硬盘SSD
- 欢迎使用CSDN-markdown编辑器
- c语言第二周总结-程序存储区划分/动态申请内存/内存操作函数
- Netty通信网络参数配置