【发布时间】:2021-09-07 17:11:27
【问题描述】:
基本上是标题。我看到一个 c++ 程序在某处使用 string&,但不知道为什么它使用它而不是 string。我试图用谷歌搜索它,但谷歌忽略了 & 符号。 string 和 string& 有什么区别?
【问题讨论】:
-
仅供参考,此搜索引擎可让您搜索符号:symbolhound.com
-
要了解更多细节,您可能必须展示您正在讨论的代码的最小示例。话虽如此,这可能是重复的,但重复并不总是很容易找到。
-
将字符串传递给函数时,std::string& 更像 std::string*,因为字符串不会被复制。但与指针 (*) 不同的是,它永远不允许是 nullptr。它必须指向(引用)一个实例。因此它被称为参考。如果您将 std::string 传递给函数,它将被复制,这样更改它就不会产生副作用。如果您想避免复制并避免更改,请使用 const 引用并传递字符串,例如 (const std::string& st)
-
这种情况在 C 和 C++ 中经常发生,这也是我建议从书籍中学习编程语言基础的原因之一。在您了解术语以及如何从优质节目中分辨出疯子的胡言乱语之后,互联网会很有帮助。