gpt4 book ai didi

c++ - C++中的字符串加法关联性

转载 作者:行者123 更新时间:2023-12-02 10:22:36 25 4
gpt4 key购买 nike

string result;
result += argv[0] + " "; //Case1: throws error: invalid operands
result = result + argv[0] + " "; //Case2: works fine

看起来上面的加法语句不相等。
我认为在Case1中,argc [0] +“”被视为(argv [0] +“”)我的理解正确吗?
有人可以解释这种行为吗?

最佳答案

运算符+是从左到右的关联,因此让我们从a + b + c(a + b) + c的假设开始。您可以在示例中忽略=+=运算符,因为它们稍后会起作用。

这里的问题是由于argv[0]char*而不是std::string所引起的,因此要允许argv[0] + " ",您需要一个不存在的免费operator+(const char*, const char*)

另一方面,std::string具有

string::string& operator+(const char* s) const;

因此您的第二个方案之所以可行,是因为它以 std::string开头并产生 std::string结果。

关于c++ - C++中的字符串加法关联性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59470057/

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