【发布时间】:2020-08-24 19:58:12
【问题描述】:
我今天看到下面的代码。
我知道返回引用和返回 const 引用的区别。
但是我不知道什么时候会调用T& operator()*,什么时候会调用const T& operator() const* 将被调用。
他们有相同的名字。
template<typename T>
class CSmartPtr
{
public:
CSmartPtr(T *ptr = nullptr) :mptr(ptr) {}
~CSmartPtr() { delete mptr; }
T& operator*() { return *mptr; }
const T& operator*()const { return *mptr; }
private:
T *mptr;
};
int main()
{
CSmartPtr<int> ptr(new int);
*ptr = 20;
cout << *ptr << endl;
return 0;
}
【问题讨论】:
-
如果
this指针是const,则调用const版本。