Macaulish

用最初的心干永远的事! qq:396577215 e_mail:fengmin_18@hotmail.com
posts - 25, comments - 48, trackbacks - 0, articles - 3
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

管理指针成员

Posted on 2008-05-27 10:48 Macaulish 阅读(1195) 评论(1)  编辑 收藏 引用
 

管理指针成员

大多数C++采用以下三种方法之一来管理指针成员:

(1)       指针成员采取常规指针型行为。这样的类具有指针的所有缺陷但无需特殊的复制控制。

(2)       类可以实现所谓的“智能指针”行为。指针所指向的对象是共享的,但类能够防止悬垂指针。

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

定义智能指针(smart pointer)类:

       智能指针除了增加功能外,其行为像普通指针一样。

1. 引入使用计数

定义智能指针的通用技术是采用一使用计数(use count)。智能指针类将一个计数器与类指向的对象关联。使用计数跟踪该类有多少个对象共享同一指针。使用计数为0时,删除对象。使用计数有时也称为引用计数(reference count)。

每次创建的新对象时,初始化指针并将使用计数置为1。当对象作为另一对象的副本而创建时,复制构造函数复制指针并增加与之相应的使用计数的值。对一个对象进行赋值时,赋值操作符减少左操作数所指对象的使用计数的值(如果使用计数减少至0,则删除对象).,并增加右操作数所指向对象的使用计数的值。最后,调用析构函数时,析构函数减少使用计数的值,如果计数减少至0,则删除基础对象。

2. 定义值型类

处理指针成员的另一个完全不同的方法,是个指针成员提供值语义(value semantics)。具有值语义的类所定义的对象,其行为很像算术类型的对象:复制值型对象时,会得到一个不同的新副本。对副本所做的改变不会反映在原有对象上,反之亦然。

Feedback

# re: 管理指针成员  回复  更多评论   

2008-05-28 16:09 by 盛大推广员
很不错。学习了

标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航: