Я относительно не знаком с С++, все еще пытаюсь получить синтаксис. Я рассматриваю несколько примеров перегрузки операторов, а в последнее время - реализации интеллектуальных указателей. Вот действительно общий пример, на который я смотрю:
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 *?