C++

C++ 管理类中指针成员的3种方法

TheHuPost newsletter上线了, 欢迎大家订阅! 
对C++, Java,JavaScript,Python等编程语言有兴趣的,也可以看看编程语言. 
也欢迎大家来论坛与我讨论

C++ 管理类中指针成员的3种方法

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

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

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

  1.   多个类的对象中的指针是指针的同一块内存,存在一个修改,全部受影响的情况,容易造成程序的逻辑错误;
  2. 很可能在某处删除了指针对象,而其他地方认为指针对象还存在,继续访问指针指向的对象,访问悬空指针的结果很随机,容易造成严重的运行时错误

C++ 管理类中指针成员的3种方法:

  1. 指针成员采取常规的指针行为, 这样的类具有指针的所有缺陷,包括上面说的两点;
  2. 智能指针, 指针所指向的对象是恭喜的,但是可以防止悬垂指针的出现;
  3.  类采取值型行为, 指针指向的对象是唯一的,由每个类对象独立管理

智能指针一般通过引用计数来防止悬垂指针,在下一篇: C++ 引用计数(reference count) 实现智能指针 里会详细介绍

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

1 thought on “C++ 管理类中指针成员的3种方法”

  1. Pingback: C++ 引用计数reference count实现智能指针 – The Hu Post

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top