標準ライブラリ 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() を呼び出すことをどのように意味するのでしょうか?