C++常规指针类(浅复制),智能指针类(计数类),值行类(深复制) 区别
来源:互联网 发布:淘宝服装平铺拍照技巧 编辑:程序博客网 时间:2024/05/17 01:39
和恶
三种方法:
·1.常见指针(浅复制)
严重缺点:造成野指针
2.智能指针(技术类)
避免野指针
3.值型类(深复制)
严重缺点:复制大量重复对象,当对象较大时,造成内存的浪费
1.常见指针:
class AHasPtr{public:AHasPtr( int *p,int i):ptr(p),val(i){}int *get_ptr() const {return ptr;}int get_int(){ return val;}void set_ptr(int *p) {ptr = p;}void set_int(int i){val = i;}int get_ptr_val()const {return *ptr;}int set_ptr_val(int val)const {*ptr = val;}private:int val;int *ptr;};
2.值型类
class CHasPtr{public:CHasPtr(const int &p,int i):ptr(new int(p)),val(i){}CHasPtr(const CHasPtr &orig):ptr(new int(*orig.ptr)),val(orig.val){}CHasPtr& operator = (const CHasPtr&);//复制操作符~CHasPtr(){delete ptr; }//析构函数int *get_ptr() const {return ptr;}int get_int() const { return val;}void set_ptr(int *p) {ptr = p;}void set_int(int i){val = i;}int get_ptr_val()const {return *ptr;}void set_ptr_val(int val)const {*ptr = val;}private:int val;int *ptr;};CHasPtr&CHasPtr::operator = (const CHasPtr &rhs){*ptr = *rhs.ptr;val = rhs.val;return *this;}
3.智能指针(计数类)
class U_Ptr{public :int *ptr;int *ip;size_t use;//记录有多少个对象指向智能指针(计数等于0的时候把它删除)U_Ptr(int *p):ip(p),use(1){}~U_Ptr(){delete ip;}};class BHasPtr{public:BHasPtr( int *p,int i):ptr(new U_Ptr(p)),val(i){}BHasPtr(const BHasPtr & orig):ptr(orig.ptr),val(orig.val){++ptr->use;}BHasPtr& operator =(const BHasPtr&);~BHasPtr(){if(--ptr->use==0){delete ptr;}}int *get_ptr() const {return ptr->ip;}int get_int(){ return val;}void set_ptr(int *p) {ptr->ip = p;}void set_int(int i){val = i;}int get_ptr_val()const {return *ptr->ip;}int set_ptr_val(int val)const {*ptr->ip = val;}private:int val;//int *ptr; 不可以使用普通指针了U_Ptr *ptr;};BHasPtr& BHasPtr::operator =(const BHasPtr& rhs){++rhs.ptr->use;if(--ptr->use ==0) delete ptr;ptr = rhs.ptr;val = rhs.val;return *this;}
。。
阅读全文
0 0
- C++常规指针类(浅复制),智能指针类(计数类),值行类(深复制) 区别
- 智能指针——类指针成员的复制
- Mystring自定义字符串类。指针。深复制,浅复制。
- C++智能指针,实现Mat类的复制控制
- 复制控制+智能指针
- C语言:深复制VS浅复制 数组VS指针
- primer 复制控制 智能指针
- C++ 复制控制 & 智能指针
- 使用智能指针优化C++类对象深度复制效率问题
- 第十三章(复制控制) 智能指针(使用计数)、定义值型类
- 支持引用计数的智能指针类模板
- 复制构造函数与智能指针
- c++ 复制控制和智能指针实现
- 智能指针以及智能指针类
- 【C++】编写一个智能指针类。
- ATL智能指针类
- 八 智能指针类
- 智能指针类
- (配置Hadoop2.x 环境搭建)完全分布式集群
- 自动化运维管理工具ansible的配置与使用
- 编程题 回文串难题
- Vue.js的组件分发 之 作用域槽
- JSON解析、JAVA常用的工具类、JAVA集合框架、JAVA泛型、枚举
- C++常规指针类(浅复制),智能指针类(计数类),值行类(深复制) 区别
- 九度OJ —— 1000
- MySQL 关于插入insert 相关的操作
- 读Zepto源码之Ajax模块
- PAT1109——Group Photo
- 设计模式的应用场景(16)--策略模式
- 最大矩形面积
- 每次打开Word2010都会出现正在配置窗口问题
- Matrix67: The Aha Moments 这是一篇旧文,点击此处以旧主题模式浏览。 什么是P问题、NP问题和NPC问题 这或许是众多OIer最大的误区之一。 你会