智能指针的其他几个问题(2/2)

原创 2007年09月18日 12:12:00

4.次序比较

如果熟悉stl,你已经知道,对于所有比较而言,定义一个less操作符就够了。其他所有操作都可以通过less获得。

对于smartpointer而言,你可以不支持次序比较操作(定义而不实现),也可以通过定义operator<支持排序比较。但是,可能你需要定义指针的operator<和T对象的operator<,一般情况,这两个不可少。 

另外,指针有两个概念,iterator和moniker,iterator关心遍历,moniker关心替代对象本身。举个例子来说,vector关心二者,list关心前者。

5.检测及错误报告

如何报告,使用异常是个不错的选择,assert也是个选择,但终有一个报告办法。另外,对于lazy初始化的情况,你还可以在检测到特定情况的时候做特定处理。

如果拒绝空smartpointer,你可以在构造函数里检测(初始化检测)。如果检测monitor,那你要在使用的时候(operator->和unary operator*)进行对象的合法性检测(dereference前检测)。但是注意,后者这种检测可能成为性能瓶颈。

6.对轻量级vector的支持

vector设计的太完善了,肯定,这也要牺牲一定的效率,有的时候,我们只想得到一个可以动态扩张的数组,不需要其他任何保证。smartpointer可以提供帮助。

7.smartpointer和多线程

同样,这里你要遇到对象加锁和指针本身。

加锁对象比较简单,你在对象里定义锁操作,在smartpointer构造、析构函数里做正确的事情就可以了。

加锁指针对象本身要考虑不同指针策略,引用计数和引用链表有不少的区别,但是你总可以。

在这里,侵入式方案又一次展示了它的优势。

智能指针的其他几个问题(1/2)

1.Address-Of操作(取址) 我们可以使用指向指针的指针,这需要对指针取址,我们很容易把同样的想法加在智能指针上,但是,使用智能指针的目的是管理指针,直接暴露给外界底层的指针一定不是什么好事,...
  • win2ks
  • win2ks
  • 2007年09月18日 11:13
  • 459

C++几种智能指针之间的比较

这些智能指针在设计的时候,一个关键的问题就是所有权的控制。如果把指针所指向的对象比作电视机的话,那么指针就是观众。第一个人需要看电视的时候需要打开它,没人看的时候就要保证把电视关掉。 对于std...
  • nyist327
  • nyist327
  • 2015年05月21日 23:59
  • 1482

智能指针2

class RefPtr { friend class TestPtr; int *ptr; size_t count; RefPtr (int *p): ptr(p),cou...
  • maintyb011
  • maintyb011
  • 2010年12月21日 17:10
  • 308

深入剖析智能指针 shared_ptr

在effective C++经常会提到智能指针,这里对shared_ptr进行一个总结: 1 简要介绍用法 智能指针主要是用于资源管理,当申请一个资源的时候为了保证在离开控制流的时候对应资源应该得...
  • xietingcandice
  • xietingcandice
  • 2015年01月13日 15:21
  • 947

为什么要用C++智能指针

对于C/C++程序员来说,指针是天堂,同时指针也是地狱。指针有多少好处,又有多少让人头疼的问题我们这里就不多说了。但为了局部解决指针的问题,我们提出了智能指针这个概念。   实际上,我一直不明白,...
  • u011676589
  • u011676589
  • 2013年08月20日 08:24
  • 686

其他几个问题

1.在一个未排序的表中寻找第k小的数 需要部分排序 2.一个表中有正有负,寻找一个连续序列,使该序列的和最大或最小。 3.一个表中有奇数有偶数,将元素重新排列,使得奇数位置上都是奇数或者使得偶数...
  • Galaxy_Li
  • Galaxy_Li
  • 2012年03月09日 16:41
  • 374

智能指针(smart pointer)

智能指针(smart pointer)是一种抽象的数据类型(abstract data type)。 在程序设计中, 智能指针通常由类模板(class template), 借助模板达到泛型。 通常借...
  • a130737
  • a130737
  • 2015年03月23日 18:46
  • 1407

智能指针剖析(2)

在上一篇博客里的智能指针的剖析中,我们是采用移交管理权的方式,并且把给出管理权的一方的指针空。 在对智能指针的再次剖析中我们仍然采用移交管理权的方式,但是在这种方式下我们并没有把管理权的一方的指针...
  • persistence_s
  • persistence_s
  • 2017年03月28日 16:18
  • 103

女人爱问的几个问题2

问题二:你看我这件衣服好看吗? 错误答案A:"挺好看的。" 错误答案B:"还行。" 错误答案C:"真好看,我老婆穿什么都好看。" 标准答案:来来来,转一圈让我看看......
  • zuozhiwei2011
  • zuozhiwei2011
  • 2012年04月28日 09:11
  • 132

以太网2层的几个问题

以太网二层
  • shaojwa
  • shaojwa
  • 2015年09月22日 20:31
  • 520
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:智能指针的其他几个问题(2/2)
举报原因:
原因补充:

(最多只允许输入30个字)