c++ primer 智能指针

来源:互联网 发布:kindle保护套知乎 编辑:程序博客网 时间:2024/06/05 05:00
#include<iostream>using namespace std;//智能指针class U_Ptr{friend class Hasptr;int *ip;size_t use;U_Ptr(int *p):ip(p),use(1){}~U_Ptr(){cout<<"u_ptr"<<endl;//delete ip;}};class Hasptr{public:int *get_ptr() const{return ptr->ip;}int get_int() const{return val;}void set_ptr(int *p){ptr->ip=p;}void set_ptr(int i){val=i;}int get_ptr_val() const{return *ptr->ip;}int set_ptr_val(int val) const{*ptr->ip=val;}Hasptr(int *p,int i):ptr(new U_Ptr(p)),val(i){cout<<ptr->use<<endl;}//hasptr p;int i=40,p=&iHasptr(const Hasptr &orig):ptr(orig.ptr),val(orig.val) //hasptr p1;p1=p,{++ptr->use;}Hasptr& operator=(const Hasptr& has)  //int j=2;hasptr q=&j;q=p{++has.ptr->use;if(--ptr->use==0)delete ptr;ptr=has.ptr;val=has.val;return *this;}~Hasptr(){cout<<"已经释放"<<endl;if(--ptr->use==0){delete ptr;}}private:U_Ptr *ptr;int val;};int main(){int i=40;Hasptr p1(&i,40);int *j=p1.get_ptr();cout<<*j<<endl;system("pause");return 0;}


原创粉丝点击