gpt4 book ai didi

c++ - 为什么以下不调用重载的 operator== (const String &, const String &)? "cobble"== "stone"

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:20 27 4
gpt4 key购买 nike

为什么以下不调用重载的 operator== (const String &, const String &)

"cobble" == "stone"

最佳答案

因为在C++中,字符串字面量是const char[]类型(也叫以零结尾的字符串常量),而不是std::string,更不用说String(无论是什么)。
有一个内置的 operator== 通过比较它们的地址来比较两个 char* 。由于数组可隐式转换为指向其第一个元素的指针(由于,您猜对了,C 继承),此运算符介入,您比较的是这些文字在内存中的地址。

假设您的 String 类具有来自 const char* (String::String(const char*)) 的隐式转换构造函数,您可以将两者之一转换为 String。然后另一个字符串将被隐式转换:

String("cobble") == "stone"

(除非为提高效率而提供采用 Stringconst char*operator== 重载。如果提供它们,它们介入。)

关于c++ - 为什么以下不调用重载的 operator== (const String &, const String &)? "cobble"== "stone",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2690737/

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