【问题标题】:Difference between string& and string in c++ [duplicate]c ++中string&和string之间的区别[重复]
【发布时间】: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++ 中经常发生,这也是我建议从书籍中学习编程语言基础的原因之一。在您了解术语以及如何从优质节目中分辨出疯子的胡言乱语之后,互联网会很有帮助。

标签: c++ string


【解决方案1】:

数据类型string&字面意思是“对字符串对象的引用”。

&有3个含义:

  1. 引用声明/参数。
  2. 地址运算符。
  3. 按位与运算符。

检查问题ampersand (&) at the end of variable etc

【讨论】:

  • “谁的内容不会被改变”是什么意思?我在任何地方都没有看到const
  • 抱歉,帖子已编辑。
  • 您还应该在函数参数中提及std::string&std::string 时会发生什么。大多数时候我看到std::string7它带有函数参数。
【解决方案2】:

&string 是对字符串对象的引用,而字符串是对象。

【讨论】:

  • 我认为std::string& 是对字符串的引用,std::string * p = &string_variable; 是字符串的地址。
猜你喜欢
  • 2013-06-25
  • 1970-01-01
  • 2016-09-30
  • 2012-09-09
  • 2011-06-14
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多