随笔 - 27  文章 - 88  trackbacks - 0
<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(4)

文章分类(3)

文章档案(3)

搜索

  •  

积分与排名

  • 积分 - 129522
  • 排名 - 198

最新评论

阅读排行榜

评论排行榜

 

管理指针成员

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

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

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

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

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

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

1. 引入使用计数

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

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

2. 定义值型类

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

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

FeedBack:
# re: 管理指针成员 2008-05-28 16:09 盛大推广员
很不错。学习了  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理