スマートポインターの実装を読んでいると、次のコードが見つかりました。
template <class T>
class SmartPtr
{
public:
explicit SmartPtr(T* pointee) : pointee_(pointee);
SmartPtr& operator=(const SmartPtr& other);
~SmartPtr();
T& operator*() const
{
...
return *pointee_;
}
T* operator->() const
{
...
return pointee_;
}
private:
T* pointee_;
...
};
以下のことが理解できません。
- "SmartPtr& operator=(const SmartPtr& other)": パラメータが定数なのはなぜですか? 割り当てが完了すると、所有権を失いませんか?
- そして、なぜ「T& operator*() const」および「T* operator->() const」メソッドが必要なのでしょうか?
どうも@