Member Function Templates翻譯成中文就是成員函數模板,這個東西我個人見得少,最初是在STL的auto_ptr源代碼裡面看到的,當時候也不是很明白;這幾天又翻了翻《More Effective C++》,正好看到上面介紹的比較詳細,就找了點資料總結一下。
為了更好的說明問題,我們自己定義一個Smart Pointer(智能指針,這裡只是示例,所以定義是不完整和不完善的),假設現在我們手上有這樣三個類:MusicProduct、CD、MP3,類之間的關系圖如下:
我們定義的智能指針SmartPtr如下:
template<class T>
class SmartPtr
{
public:
explicit SmartPtr(T* realPtr = NULL) : pointee(realPtr){}
T* operator->() const
{
return pointee;
}
T& operator*() const
{
return *pointee;
}
private:
T* pointee;
};