gpt4 book ai didi

c++ - 将 CComBSTR 与 NULL 进行比较

转载 作者:行者123 更新时间:2023-11-28 07:37:28 26 4
gpt4 key购买 nike

最近,我正在编写代码并找到以下代码:

CComBSTR userName;
SUCCEED(getUserName(userName));
if(userName == NULL) ...

最后一行提醒我,因为我正在将一个对象与 NULL 进行比较,这不直观。但是在MSDN上看了一眼,是完美支持的:

bool operator ==( const CComBSTR& bstrSrc ) const throw( ); 
bool operator ==( LPCOLESTR pszSrc ) const;
bool operator ==( LPCSTR pszSrc ) const;
bool operator ==( int nNull ) const throw( );

所以我的问题是,为什么 CComBSTR 的 API 设计允许这样的比较?只是为了更容错?

最佳答案

智能指针的设计旨在尽可能模仿原始指针,简单地提供自动内存管理,但对外部代码透明。这意味着覆盖 ->=& 运算符,实现转换操作等。这样,其余代码可以处理智能指针几乎在所有方面都像一个真正的指针。

假设有人开始使用这段代码:

BSTR userName;
SUCCEED(getUserName(&userName));
if(userName == NULL) ...

然后想升级为智能指针:

CComBSTR userName;
SUCCEED(getUserName(&userName));
if(userName == NULL) ...

看看它是如何工作的?只有一行发生了变化。

关于c++ - 将 CComBSTR 与 NULL 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16475938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com