我正在阅读实现智能指针,我发现了以下代码,
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”方法?
谢谢@
最佳答案
要点1.不一定,要看智能指针的设计。像 boost:shared_ptr
这样的东西不会在分配时转移所有权。
Point 2. 这些方法模拟了智能指针上的正常指针操作。
关于C++:实现智能指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11909626/