RWCString 和 const char * 之间的隐式转换

发布于 2024-10-11 07:19:16 字数 294 浏览 2 评论 0原文

RWCString str = "Y";
str.append("ES");
if("YES" == str)
    cout << "YES == str" << endl;
if(str == "YES")
    cout << "str == YES" << endl;

在这两种情况下,隐式转换是如何发生的?哪一种可以安全使用? RWCString 是一个字符串类,它有一个采用 const char* 的构造函数和一个到 const char* 的转换运算符

RWCString str = "Y";
str.append("ES");
if("YES" == str)
    cout << "YES == str" << endl;
if(str == "YES")
    cout << "str == YES" << endl;

How does the implicit conversion take place in both cases? Which one is safe to use?
RWCString is a string class which has a constructor taking const char* and an conversion operator to const char*

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

标点 2024-10-18 07:19:16

对于 const char*RWCString 之间的比较,== 极有可能被重载。

否则,要么将 str 转换为 const char *,要么调用不明确:

如果存在外部或外部调用,则 str == "YES" 是不明确的。成员operator== 比较两个RWCString

如果存在外部 operator== 比较两个 RWCString,则 "YES" == str 是不明确的。

(假设operator== 的参数正常传递——通过副本或const 引用)。

It is extremely likely that == is overloaded for comparisons between const char* and RWCString.

Otherwise either str is converted to const char * or the calls are ambiguous:

str == "YES" is ambiguous if there is an external or member operator== comparing two RWCStrings.

"YES" == str is ambiguous if there is an external operator== comparing two RWCStrings.

(assuming that the arguments to the operator== are passed normally -- either through a copy, or a const reference).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文