类模版的使用----智能指针
2015-12-28 15:58
190 查看
<span style="font-size:24px;">// SmartPointer.h #ifndef _SMARTPOINTER_H_ #define _SMARTPOINTER_H_ template< typename T> class SmartPointer { private: public: SmartPointer(); SmartPointer(T* pointer); ~SmartPointer(); T& operator*(); T* operator->(); protected: T* m_pointer; }; #endif</span>
<span style="font-size:24px;">//SmartPointer.hpp #ifndef _SMARTPOINTER_DEF_H_ #define _SMARTPOINTER_DEF_H_ #include "SmartPointer.h" template<typename T> SmartPointer<T>::SmartPointer() { m_pointer = NULL; } template<typename T> SmartPointer<T>::SmartPointer(T* pointer) { m_pointer = pointer; } template<typename T> SmartPointer<T>::~SmartPointer() { delete m_pointer; } template<typename T> T& SmartPointer<T>::operator*() { return *m_pointer; } template<typename T> T* SmartPointer<T>::operator->() { return m_pointer; } #endif</span>
<span style="font-size:24px;">//智能指针的使用 //main.cpp #include <iostream> #include "SmartPointer.hpp" /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; class Test { public: int i; void print() { cout << i << endl; } }; int main(int argc, char *argv[]) { SmartPointer<int> pi = new int(5); cout << *pi << endl; *pi = 10; cout << *pi << endl; //---------------------------------------// SmartPointer<Test> t = new Test(); t->i = 20; t->print(); cout << t->i << endl; return 0; }</span>
相关文章推荐
- LeetCode 067 Add Binary
- 设计模式之依赖倒置
- SortedSet有序集合类型
- ImageSwitcher的简单使用
- com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process
- applicationContext.xml中的使用${}是代表什么意思?
- 4_微信公众帐号开发教程第4篇-----开发模式启用及接口配置Java
- x264获取sps pps 等信息
- 设置TinyMCE在线HTML编辑控件只读
- 峰值的部分计算方法
- 绘制饼图
- 青岛Uber优步司机奖励政策(12月28日到1月3日)
- set集合类型
- [转]iOS各种图片的大小要求 iOS Human Interface Guidelines: Icon and Image Sizes
- 11.5,面向对象
- 设置输入键盘视图的特性
- 多个ajax请求下等待条显示和隐藏的简单处理
- 栈和队列
- MD5_SHA1_RSA_DES_AES加密 WPF 测试代码
- 自动化部署必备技能—搭建YUM仓库