C++管理类的指针成员.docx
《C++管理类的指针成员.docx》由会员分享,可在线阅读,更多相关《C++管理类的指针成员.docx(14页珍藏版)》请在冰豆网上搜索。
C++管理类的指针成员
【c++】类管理指针成员
c++编程提倡使用标准库,一个原因是标准库大胆减少对指针的使用。
但是许多程序是离不开指针的。
包含指针的类需要特别注意复制控制,原因是复制指针时只复制指针中的地址,而不复制指针所指向的对象。
这样当把一个对象复制给另一个对象后,当改变一个对象后,另一个对象也会收到牵连。
另外一个对象释放掉后,其指针已经被释放掉。
而另一个对象还不知道,其实该对象中的指针已经成为悬垂指针。
这样再操作就会出现错误。
1.定义智能指针类
原理:
定义一个计数的类,所有复制的都是指向这一个类,每复制一次,该类加1一次;每析构一次,该类减1一次。
当次数为0时,释放掉动态申请的空间。
图例:
1)定义一个对象
2)复制一个对象
#include
#include
usingnamespacestd;
classHasPtr;
//定义计数类
classU_Ptr
{//没有访问标号,默认为private,保证类的隐私,但是友员类可以随意访问(包括private)
friendclassHasPtr;
U_Ptr(int*p):
ip(p),use
(1){}
~U_Ptr(){cout<<"hello"<