For*_*ega 0 c++ pointers operator-overloading wrapper
我正在使用一个名为Pointer的类,我猜这是一个真实指针的包装器.我认为这个类中的这行代码使我能够得到真正的指针:
operator const T* () const;
Run Code Online (Sandbox Code Playgroud)
这究竟是什么意思?我怎么称呼这个?
假设myPointer是一个Pointer<int16_t>对象.我应该能够int_16*通过使用上面的运算符重载来获取包装此指针的对象,但我不知道如何.
编辑
根据答案,我现在知道我可以这样做:
const int16_t* myRealPointer = myPointer;
Run Code Online (Sandbox Code Playgroud)
现在假设我需要调用一个需要int16_t*参数的函数(所以没有const).如何将此myRealPointer对象传递给该函数?
这是一个转换运算符.例如,您可以使用它将a转换Pointer<T>为real T*,并且在T*预期的任何地方使用它:
Pointer<float> p(new float);
const float* p2 = p;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,操作符仅定义为转换为const原始指针,因此float* p2 = p;不起作用.(对于那种情况,也可能有类似的运营商.)