C++ 三种常见的管理类中指针成员的方法

C++ Primer 提倡多使用标准库,少使用指针,但是现代程序中还是不可避免的需要使用指针。

包含指针的类需要特别注意复制控制,因为复制指针时只是复制指针的值,即指针中的地址,而不会复制指针指向的对象;

这样会带来以下两种影响:

1.   多个类的对象中的指针是指针的同一块内存,存在一个修改,全部受影响的情况,容易造成程序的逻辑错误;

2. 很可能在某处删除了指针对象,而其他地方认为指针对象还存在,继续访问指针指向的对象,访问悬空指针的结果很随机,容易造成严重的运行时错误


C++采用以下三种方式之一来管理类中的指针成员:

1. 指针成员采取常规的指针行为, 这样的类具有指针的所有缺陷,包括上面说的两点;

2. 智能指针, 指针所指向的对象是恭喜的,但是可以防止悬垂指针的出现;

3.  类采取值型行为, 指针指向的对象是唯一的,由每个类对象独立管理


智能指针一般通过引用计数来防止悬垂指针,在下一篇里会详细介绍


定义值型类,是给指针提供值语义,即在类的复制控制中拷贝指针说指向的对象,而不是指针本身

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值