包装类的 C++ 运算符重载

标签 c++ pointers operator-overloading wrapper

我正在使用一个名为 Pointer 的类,我猜它是某种围绕真实指针的包装器。我认为此类中的这行代码使我能够获得真正的指针:

 operator const T* () const;

这到底是什么意思?我怎么调用它?

假设 myPointerPointer<int16_t>目的。我应该能够得到 int_16*包装此指针的对象,通过使用上面的运算符重载,但我不知道如何。

编辑

根据下面的答案,我现在知道我可以做到这一点:

const int16_t* myRealPointer = myPointer;

现在假设我需要调用一个需要 int16_t* 的函数参数(所以没有常量)。我该怎么做才能将此 myRealPointer 对象传递给该函数?

最佳答案

这是一个转换运算符。例如,您可以使用它来转换 Pointer<T>真实 T*此外,在任何地方都可以使用它 T*预计:

Pointer<float> p(new float);
const float* p2 = p;

在这种情况下,运算符仅为转换为 const 原始指针而定义,因此 float* p2 = p;不会工作。 (对于这种情况,也可能有类似的运算符。)

关于包装类的 C++ 运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30753347/

相关文章:

C 数组被覆盖/删除?很困惑

c - 以下是二维数组吗?

c - 取消引用指向结构变量的结构指针

c++ - 重载全局类型转换运算符

c++ - 运营商 T(){} - 不工作

debugging - Ada "="运算符重载错误

c++ - 使用 boost C++ 通过正则表达式替换字符串

c++ - 在 Windows 上获取鼠标光标位置和按钮状态

c++ - std::getline 和 eol 与 eof

c++ - 计算 vector 上正态分布的 cdf 的最快方法 - R::pnorm vs erfc vs?