我有一小段代码:
CString temp = _T("Temp");
if(_T("Temp") == temp)
{
....
}现在,由于CString类中有一个friend opeartor==函数,因此将调用operator==。但是也有一个为CString定义的operator LPCTSTR。所以我的问题是,为什么不使用这个运算符而不是operator==?如果我们暂时假设没有friend operator==,那么会使用operator LPCTSTR吗?对于这种情况,语言规则是怎么说的?
发布于 2010-11-19 20:16:12
与需要用户定义的转换的运算符LPCTSTR相比,调用重载的operator==是完全匹配的。精确匹配优先于用户定义的转换。
是的,如果operator==不在那里,那么下一个最佳候选者(当然也是可行的)是运算符LPCTSTR,它将被调用以获得兼容的参数。
https://stackoverflow.com/questions/4224843
复制相似问题