gpt4 book ai didi

c++ - 为什么这个 std::string C++ 代码没有给出编译时错误?

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

我有以下片段:

#include <string>

int main(int argc, char *argv[])
{
std::string a, b, c;
a + b = c;
return 0;
}

为什么这个 C++ 代码没有给出编译时错误?这可能是因为 std::string::operator+ 的实现方式,但我的问题是:为什么要这样实现?在什么情况下需要这种行为?

最佳答案

您可以分配给临时对象。没有规则阻止这种情况。

如果您不想临时调用成员函数(在 r-value 上,更一般地说),您可以使用 ref-qualifier在函数声明中。

但如你所见here , std::string::operator= 没有 ref-qualified 版本。

我不认为标准委员会允许这种行为有明确的目标;我想这种选择背后的基本原理是尽可能少地向程序员施加规则,让他找到有用的应用程序(如果存在的话)。

关于c++ - 为什么这个 std::string C++ 代码没有给出编译时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34003276/

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