我在看一个包装类的.h文件。和类包含一个私有成员:

T* dataPtr;

(其中T是如在.h文件的顶部定义template < class T >

在类提供了两个 “*重载操作者” 的方法:

T& operator*()
{
   return *dataPtr;
}

const T& operator*() const
{
  return *dataPtr;
}

这两个简单的返回*dataPtr,但到底是什么符号“*dataPtr”实际上返回,用简单的英语?它是如何适应与返回类型“T&”?

有帮助吗?

解决方案

返回类型T&指出要返回为T对象的实例的引用。 dataPtr是一个指针,使用它你“解引用”(获得一个指针的参考值/实例)*。

其他提示

dataPtr是指向东西。

*运算符取消引用指针,所以* dataPtr是(或,而不是“是”,则可以说“是指”或“是一个参考”)的指针对象,即dataPtr指向的事情。

T&装置(不与T *这意味着“一个指向一个对象,其类型为T”相混淆)“到一个对象,其类型为T的参考”。

*DataPtr是实际的数据通过DataPtr指向。无论是运营商返回一个参考T。 A 引用的是,你应该想到像另一个名称为价值是指一个类型。 “引擎盖下”,它类似于一个指针,但不要以为这样的说法。它不能做指针运算,或进行“重新插拔一下。”一个运营商的是constconst对象上被使用,并且另一种是正常的对象上使用。

在包装类似乎表现得象一个C ++指针。

运算符*解引用这将计算为它存储(在dataPtr)事物的包装。你得到的是这种内容的参考。例如。可以分配的东西到参考

*intWrapper = 42;

有两个操作者,因为有一个恒定和非恒定的版本。当取消引用恒定包装类,就不能分配给它(const引用(T&)被返回)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top