一点小疑问,红色部分什么意思?

对于操作原始的接口指针是比较麻烦的,需要我们自己控制引用记数、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,而是重新定义了一个模板实例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值