首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >混淆"operator==“或"operator LPCTSTR”

混淆"operator==“或"operator LPCTSTR”
EN

Stack Overflow用户
提问于 2010-11-19 20:14:11
回答 2查看 409关注 0票数 1

我有一小段代码:

代码语言:javascript
运行
复制
CString temp = _T("Temp");
if(_T("Temp") == temp)
{
 ....
}

现在,由于CString类中有一个friend opeartor==函数,因此将调用operator==。但是也有一个为CString定义的operator LPCTSTR。所以我的问题是,为什么不使用这个运算符而不是operator==?如果我们暂时假设没有friend operator==,那么会使用operator LPCTSTR吗?对于这种情况,语言规则是怎么说的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-19 20:16:12

与需要用户定义的转换的运算符LPCTSTR相比,调用重载的operator==是完全匹配的。精确匹配优先于用户定义的转换。

是的,如果operator==不在那里,那么下一个最佳候选者(当然也是可行的)是运算符LPCTSTR,它将被调用以获得兼容的参数。

票数 4
EN

Stack Overflow用户

发布于 2010-11-19 20:21:43

比较LPCTSTR值对您没有任何好处...比较将检查指针,并给出它们是否是相同的地址,这不是(我认为)您想要做的事情。因此,在缺少运算符==的情况下,您是在比较指针,这是没有意义的双关语。

对于运算符==,有三种版本,一种是两个操作数都是CString,一个是第一个操作数是CString,第三个是第二个操作数是CString。

如果您接受CString变量并将其发送给需要LPCTSTR的函数(如OutputDebugString等),则将使用运算符LPCTSTR。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4224843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档