C++句柄代码实现(1)
2017-03-18 13:03
330 查看
欢迎转载请注明出处:海漩涡
http://blog.csdn.net/tanhuifang520
C++句柄代码实现(1)
C++句柄
作用:解决代理类中,创建代理时复制所有代理对象的问题
http://blog.csdn.net/tanhuifang520
C++句柄代码实现(1)
C++句柄
作用:解决代理类中,创建代理时复制所有代理对象的问题
#include using namespace std; class Point{ public: Point():xval(0){} Point(int _x):xval(_x){} Point &x(int _x){ xval = _x; return *this;} int x(){ return xval; } private: int xval; }; class UPoint{ // 所有成员为私有 friend class Handle; UPoint():u(1){} UPoint(int _x):u(1),P(_x){} UPoint(Point &p0):u(1),P(p0){} int u; Point P; }; class Handle{ public: Handle():up(new UPoint){} Handle(int _x):up(new UPoint(_x)){} Handle(Point &p0):up(new UPoint(p0)){} Handle(Handle &h):up(h.up){ up->u++; } ~Handle(){ if(0 == --up->u) delete up;} Handle& operator=(const Handle &h) { if(0 == --up->u) delete up; up = h.up; up->u++; } int x() { return up->P.x(); } #if 1 // 指针语义 Handle& x(int _x) { up->P.x(_x); return *this; } #else // 值语义 Handle& x(int _x) { if(1 != up->u) { up->u--; up = new UPoint(up->P); } up->P.x(_x); return *this; } #endif private: UPoint *up; }; int main() { Handle h(3); Handle h1 = h; h1.x(5); cout<<"h.x = "<
相关文章推荐
- Fast Compressive Tracking(快速压缩跟踪)算法的C++代码实现
- n皇后详解及代码实现/C++
- 快速排序的递归和非递归实现 -----C++、JAVA代码实现
- 用一段代码实现一个链表倒序(C++实现)
- C/C++ -- Gui编程 -- Qt库的使用 -- 纯代码实现信号槽
- C/C++实现的游戏角色名称名字随机生成代码
- 用C/C++实现代码的动态修改(SMC)
- 顺序查找及C++代码实现SequentialSearch
- C++实现FFT代码
- 《大话设计模式》读书笔记(C++代码实现) 第一章:简单工厂模式
- C++实现委托机制之完整代码实现(一)
- C++ 基数排序的实现实例代码
- C++的RMQ的代码实现
- 用vim实现C++代码的自动补全功能
- 【LeetCode】【Python】【C++】7. Reverse Integer代码实现
- 算法代码实现之二分法查找,C/C++实现
- Bezier曲线原理及实现代码(c++)
- C++输出上三角/下三角/菱形/杨辉三角形(实现代码)
- 《大话设计模式》读书笔记(C++代码实现) 第二章:策略模式