模板类有个问题
再看开源代码,一下是代码片段。
template <class TYPE> class CSmartPtr{public: TYPE * m_pObject; BOOL m_bArray; BOOL m_bDelete; __forceinline TYPE * GetPtr() const { return m_pObject; } __forceinline operator TYPE * () const { return m_pObject; } __forceinline TYPE * operator ->() const { return m_pObject; } // declare assignment, but don't implement (compiler error if we try to use) // that way we can't carelessly mix smart pointers and regular pointers __forceinline void * operator =(void *) const;};
class CIO{ //这个里面的函数都是纯虚的,应该是作为一个抽象来用,没有符号重载};
int main(){ CSmartPtr<CIO> m_spIO; if(m_spIO == NULL) { return -1; } return 0;}
004664A2 mov ecx,dword ptr [ebp-14h] 004664A5 add ecx,8 004664A8 call CSmartPtr<CIO>::operator CIO * (45237Eh) 004664AD test eax,eax 004664AF jne CAPEInfo::GetFileInformation+56h (4664B6h) 004664B1 or eax,0FFFFFFFFh 004664B4 jmp CAPEInfo::GetFileInformation+0BEh (46651Eh)