我试图实现一个类似于标准库 auto_ptr 的智能指针类,因此我不得不重载 -> 运算符。这是我的代码
template <typename T>
class SmartPtr
{
T * operator -> ()
{
return _pAct;
}
private:
T * _pAct;
};
其余的实现没有显示,以避免转移我的查询。
现在我创建一个 A 类的 SmartPtr 并在其上调用 A 中的 Show() 方法:
SmartPtr smPtr(new A);
smPtr->Show();
这是我的查询(不知道它是否也有效)
由于 SmartPtr::operator->() 返回 A*,因此对 show 的调用应转换为 (A*)Show。为什么它转换为 (A*)->Show() ?
或者换句话说, smPtr->Show() 如何在任何 smPtr->() 运算符返回时调用 Show() ?