智能指针类的使用示例
来源:互联网 发布:cocos2d内存优化 编辑:程序博客网 时间:2024/06/02 05:43
今天学习了一下智能指针类的使用,想把学习的心得和大家分享一下,在用到智能指针的时候可以查阅和利用!代码如下:
#include<iostream>using namespace std;class Smart_Ptr{friend class Instance_Ptr;int *s_p;size_t count;Smart_Ptr(int *p): s_p(p),count(1) {}~Smart_Ptr() {delete s_p;}};class Instance_Ptr{public:Instance_Ptr(int *p,int i): ptr(new Smart_Ptr(p)),val(i) {}Instance_Ptr(const Instance_Ptr &orig):ptr(orig.ptr),val(orig.val){++ptr->count;}Instance_Ptr& operator=(const Instance_Ptr&);~Instance_Ptr(){if(--ptr->count==0) delete ptr;}int *get_ptr() const {return ptr->s_p;}int get_int() const {return val;}void set_ptr(int *p) {ptr->s_p=p;}void set_int(int i) {val=i;}int get_ptr_val() const {return *ptr->s_p;}void set_ptr_val(int i) {*ptr->s_p=i;}private:Smart_Ptr *ptr;int val;};Instance_Ptr& Instance_Ptr::operator=(const Instance_Ptr &rhs){++rhs.ptr->count;if(--ptr->count==0)delete ptr;ptr=rhs.ptr;val=rhs.val;return *this;}ostream& operator<<(ostream &os, const Instance_Ptr &hp){ os << "*ptr: " << hp.get_ptr_val() << "\t val: " << hp.get_int() << endl; return os;}int main(){ int obj = 0; Instance_Ptr ptr1(&obj, 12); Instance_Ptr ptr2(ptr1); cout << "(1) ptr1: " << ptr1 << endl << "ptr2: " << ptr2 << endl; ptr1.set_ptr_val(12); // sets object to which both ptr1 and ptr2 point ptr2.get_ptr_val(); // returns 12 cout << "(2) ptr1: " << ptr1 << endl << "ptr2: " << ptr2 << endl; ptr1.set_int(2); // changes s member only in ptr1 ptr2.get_int(); // returns 12 ptr1.get_int(); // returns 0 cout << "(3) ptr1: " << ptr1 << endl << "ptr2: " << ptr2 << endl; return 0;}
- 智能指针类的使用示例
- 使用智能指针的一个示例
- C++的shared_ptr智能指针的使用示例
- 常用智能指针使用源代码示例
- boost::share_ptr智能指针使用示例
- boost::share_ptr智能指针使用示例
- boost::share_ptr智能指针使用示例
- 常用智能指针使用源代码示例
- C++智能指针unique_ptr使用示例
- boost::share_ptr智能指针使用示例
- 智能指针的使用
- 智能指针的使用
- 智能指针的使用
- 智能指针的使用
- 简易的C++智能指针原理示例
- 智能指针auto_ptr类模板的使用
- 类模版的使用----智能指针
- C++智能指针示例
- Android的文本和输入---拼写检查器(二)
- 解决MySql Error Code: 2006 – MySQL 服务器已离线 错误
- 小球的排列组合问题
- #include <sys/stat.h>文件状态
- Asp.net(c#)数据库操作类
- 智能指针类的使用示例
- linux centos下 vsftp 配置步骤!
- 抽象类 学习
- Java对象序列化学习笔记
- JAVA注释规范
- 倒排索引基础
- 我将未来开放
- linux下查找局域网内的ip--nmap工具使用
- VB.net类型间的转换