【发布时间】:2015-06-10 10:11:37
【问题描述】:
我正在使用一个名为 Pointer 的类,我猜它是一种围绕真实指针的包装器。我认为这个类中的这行代码可以让我得到真正的指针:
operator const T* () const;
这到底是什么意思?这个怎么称呼?
假设myPointer 是一个Pointer<int16_t> 对象。通过使用上面的运算符重载,我应该能够获得包装此指针的int_16* 对象,但我不知道如何。
编辑
根据下面的答案,我现在知道我可以做到这一点:
const int16_t* myRealPointer = myPointer;
现在假设我需要调用一个需要 int16_t* 参数的函数(所以没有 const)。我该怎么做才能将此 myRealPointer 对象传递给该函数?
【问题讨论】:
-
您要查找的关键字是“隐式转换运算符”;您可以通过将
myPointer转换为int_16*来触发它(假设还有该运算符的非常量版本),通过将其分配给int_16*类型的对象,通过将其传递给期望对象为的函数输入int_16*,在其他一些我不记得的情况下。在实践中,隐式转换运算符使对象能够在您可能需要此类转换的最微小提示时衰减到目标类型。 -
可能问题标题有误导性,还有标签
-
@Wolf 毫不犹豫地调整它
标签: c++ pointers operator-overloading wrapper