gpt4 book ai didi

c++ - 如何正确重载算术运算符,以便 "3"+ "4"在 C++ 中可以是 "7"

转载 作者:行者123 更新时间:2023-11-27 22:51:17 26 4
gpt4 key购买 nike

我用 + 重载了

string operator+(string a, string b);

当我这样做时它起作用了:

string a = "3";
string b = "4";
cout << a + b;

但是,当我这样做时,它会失败并显示错误消息:二进制表达式的操作数无效(const char * 和 const char* )

cout << "3" + "4";

谁能告诉我如何解决这个问题?

感谢回复,我明白为什么会出现错误,我不应该在 C++ 中重载操作数是内置类型的运算符。

最佳答案

除非您将至少一个参数设为用户定义的类型,否则您不能重载运算符,因此您的要求是不可能的。但是,最接近该语法的可能是使用用户定义的文字。在 C++14 中,s 后缀被定义为创建一个 std::string

using namespace std::string_literals;
std::cout << "3"s + "4"s;

如果你不能使用C++14,但可以使用C++11,那么你可以定义自己的文字后缀。

std::string operator""_s (const char* cs, size_t)
{
return std::string(cs);
}

关于c++ - 如何正确重载算术运算符,以便 "3"+ "4"在 C++ 中可以是 "7",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37041374/

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