我正在阅读实现智能指针,发现以下代码,
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”方法?
谢谢@