一點小疑問,紅色部分什麼意思?

對於操作原始的接口指針是比較麻煩的,需要我們自己控制引用記數、API 調用、異常處理。於是 ATL 提供了2個智能指針的模板包裝類,CComPtr<> 和 CComQIPtr<>,這兩個類都在 <atlbase.h> 中聲明。CComQIPtr<> 包含了 CComPtr<>的所有功能,因此我們可以完全用 CComQIPtr<> 來使用智能接口指針,唯一要說明的一點就是:CComQIPtr<> 由於使用了運算符的重載功能,它會自動幫我們調用QueryInterface()函數,因此 CComQIPtr<> 唯一的缺點就是不能定義 IUnknown * 指針。

    // 智能指針 smart pointer,按照匈牙利命名法,一般以 sp 開頭來表示變量類型
    CComPtr < IUnknown > spUnk;	// 正確
    // 假設 IFun 是一個接口類型
    CComPtr < IFun > spFun;	// 正確
    CComQIPtr < IFun > spFun;	// 正確
    CComQIPtr < IFun, &IID_IFun > spFun;	// 正確
    CComQIPtr < IUnknown > spUnk;	// 錯誤!CComQIPtr不能定義IUnknown指針
因爲CComQIPtr中有一個CComQIPtr(T* lp)和CComQIPtr(IUnknown* lp)所以如果T=IUnknown那麼兩個函數就重名了,所以不能查詢IUnknown,而是重新定義了一個模板實例
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章