C++灵巧指针
来源:互联网 发布:sql使用教程 编辑:程序博客网 时间:2024/06/11 21:25
template<class Type>class SmartPtrToConst{//这个类作为基类而存在,为了实现从const smart pointer 到smart pointer的转换....protected:union{const Type* constPointer;Type* pointer;};};template<class Type>class SmartPtr:public SmartPtrToConst//继承自基类,原理:const类型的指针可以做的,Non-const类型一样可以做,而且可以做得更多{public:SmartPtr(Type* realPtr = 0):pointer(realPtr){}//拷贝构造函数,传递控制权SmartPtr(SmartPtr& rhs){pointer = ths.pointer;ths.pointer = 0;}~SmartPtr(){deletepointer;}//赋值操作符//参数不为const引用,是修改实参本身,传递控制权SmartPtr& operator=(SmartPtr& rhs);{if(*this == SmartPtr)return *this;//清除当前对象delete pointer;pointer = rhs.pointer;//传递控制权限rhs.pointer = 0;return *this;}Type* operator->() const{return pointer}Type& operator*() const{return *pointer;}//完成判断灵巧指针与控制比较//该实现可能存在问题,不确定//if(!smartObject1 == !smartObject2)bool operator!() const{if(pointer==null)return true;return false;}//将灵巧指针转换为dump指针,一般禁止这样做,避免不必要的麻烦,隐式类型转换//在需要dump指针的函数里面,传递灵巧指针,不能编译通过//operator Type*()//{//return pointer;//}//模板成员函数//实现灵巧指针派生类到基类的类型转换//例:SmartPtr<SubClass> -->SmartPtr<BaseClass>template<class newType>operator SmartPtr<newType>(){//词条语句编译可以通过,dump指针可以进行基类与派生类的转换//smart指针同样可以进行传递return SmartPtr<newType>(pointer);}private://Type* pointer;//如果const类型的smart pointer类存在,就不需要};
0 0
- More Effective C++----(28)灵巧(smart)指针
- 灵巧(smart)指针
- C++灵巧指针
- 灵巧指针与内存回收
- C++中灵巧指针auto_ptr
- 灵巧指针与内存回收
- 基于灵巧指针和引用计数的String类
- STL(1)---从对->运算符的重载到灵巧指针再到迭代器
- 灵巧的jsp注入
- C++灵巧计数器技术
- C指针的指针
- c 指针的指针
- C--指针
- C-指针
- C指针
- C指针
- C指针
- C---指针
- fill/fills/fillfunction填充颜色
- 哇棒的APP营销法则
- 正则表达式30分钟入门教程
- 翻译官网 Fragment
- python写的linux下的词典程序
- C++灵巧指针
- spring的事物隔离级别的解析
- 使用游标删除数据库表
- IOS学习笔记2-IOS屏幕 [[UIScreen mainScreen] bounds] 与[UIScreen mainScreen] applicationFrame]区别
- WP下的AES加密ECB模式PaddingPkcs#5填充
- Hibernate优化策略
- FastDFS分布式文件系统点滴记录5 -- upload上传机制剖析1
- Unix/Linux的“ourhdr.h”文件内容
- Salesforce针对企业IT推出私有云类“iTunes应用商店”