我对C++还比较陌生,仍在努力掌握语法。我一直在研究一些运算符重载的例子,最近是智能指针实现。这是一个非常通用的例子:
template < typename T > class SP
{
private:
T* pData; // Generic pointer to be stored
public:
SP(T* pValue) : pData(pValue)
{
}
~SP()
{
delete pData;
}
T& operator* ()
{
return *pData;
}
T* operator-> ()
{
return pData;
}
};
当重载解引用运算符时,为什么类型是T&?同样地,当重载结构体解引用运算符时,为什么类型是T*?
*
运算符,模仿它并不罕见(包括对const
的重载,如果您想要完整的范围)。 - WhozCraig