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

原创 2007年09月18日 11:13:00

1.Address-Of操作(取址) 

我们可以使用指向指针的指针,这需要对指针取址,我们很容易把同样的想法加在智能指针上,但是,使用智能指针的目的是管理指针,直接暴露给外界底层的指针一定不是什么好事,而且,定义了取址操作的类型几乎不可能被使用于范型编程。

从这个意义上来说,远离Address-Of操作是个不错的选择。

2.隐式转换(Implicit Conversion)至原始指针

被传递的隐式转换的指针同样超出了智能指针的管理范围,不可预料的事情一样可能发生。而且,一个极端的情况是用户delete智能指针操作的时候,因为隐式转换的存在,在智能指针管理范围之外已经被删除了指针,这是和设计使用智能指针的初衷背道而驰的。

仅仅为了避免delete,可以定义void*的转换,造成delete歧义。但是,这个问题的更好解决方案是使用显示方法获取底层指针(显示转换)。这样做的好处是,你要做超出智能指针管理权限的事情,但是,白纸黑字,你的代码保证这是你可以如此做的。

隐式转换和显示转换的历史也告诉我们,显示要安全一些。

3.相等性(Equality)和不等性(Inequality)

为了支持相等性和不等性的测试,传递成为底层指针的测试是个不错的想法,但是这样有各种各样的问题,暴力定义各个操作是个不错的选择,尽管复杂烦琐,但是这保证了程序正确的行为,这是值得的,而且我们还有template技术的支持,不会有太多的代码,试想一下LOKI_TYPELIST_50你就知道你没做多少工作了。

对每种判断情况定义判断操作函数,friend化保证可以访问到底层数据,是实现这些方法的手段。唯一一个无法解决的问题是if(sp)...测试,但是你可以使用if(!!sp)...替代。可以有手段支持到if(sp)...,但是不安全。

【深入了解cocos2d-x 3.x】内置数据结构(1)——智能指针

智能指针在C++11的标准中已经存在了,分别是unique_ptr,shared_ptr,weak_ptr,其中最常用的应该是share_ptr,它采用引用计数的方式管理内存,当引用计数为0的时候,自...

enote笔记法使用范例(2)——指针(1)智能指针

要知道什么是智能指针,首先了解什么称为 “资源分配即初始化” what RAII:RAII—Resource Acquisition Is Initialization,即“资源分配即初始化” ...

NS2安装时应注意的几个问题

  • 2013年03月27日 20:55
  • 93KB
  • 下载

关于指针和内存的几个问题

关于指针和内存的几个问题 一、"delete p" 会删去 "p" 指针,还是它指到的资料,"*p" ? 该指针指到的资料。"delete" 真正的意思是:「删去指针指到的东西」(dele...

关于指针的几个问题与解答

这几天一直在理解这几个概念。假如我声明了一个指针,它占用内存不,有没有地址。如果只声明,不初始化,值是没有还是值随机。普通变量也是。利用指针在函数之间进行通信,应该怎样才能正常通信。指针和数组名、字符...
  • wzsbll
  • wzsbll
  • 2011年04月13日 20:56
  • 1184

文件描述符与文件指针等文件操作的几个问题

1.二者对比: 文件描述符就是open文件时产生的一个整数,直到一个索引作用,它用于UNIX系统中,用于标识文件。它是系统调用产生的。 文件指针是指向一个FILE的结构体,这个结构体里有一...

C++11教程1 智能指针——unique_ptr

to do

【C++系列1】智能指针

问题: fatal error C1083: 无法打开包括文件:“boost/shared_ptr.hpp”: No such file or directory ------解决思路----...
  • ssutlyh
  • ssutlyh
  • 2014年10月15日 21:44
  • 532

C++:智能指针-TR1的shared_ptr和weak_ptr使用介绍

shared_ptr: Based on a reference counter model, with the counter incremented each time a new shared ...

ReactNative4Android源码分析1: JNI智能指针之介绍篇

通常的app中, JNI提供的native函数均是Java类的扩展而已,逻辑层主要在Java端,JNI端少使用OOM的设计思想。而对于native端功能较重的模块,例如开源的阅读器FBReader,n...
  • eewolf
  • eewolf
  • 2016年09月01日 22:22
  • 514
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:智能指针的其他几个问题(1/2)
举报原因:
原因补充:

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