这是将字符串作为参数传递给函数的内存有效方法.

Bal*_*gan 5 c++ string memory-management

可以任何人告诉我.将字符串作为func(字符串&)而不是func(字符串)传递有任何好处.

aka*_*ppa 4

通过引用传递对象意味着您是通过值传递引用而不是通过值传递对象,这意味着您必须在函数调用时创建副本。

然而,通过引用传递引入了一组您必须注意的新问题:

  1. 该函数是否修改传递的对象?如果没有,您应该输入const修饰符
  2. 函数是否需要修改对象,但不将修改暴露在函数边界之外?在这种情况下,您真正​​想要的是副本。
  3. 该函数是否在某处/以某种方式存储传递对象的引用?在这种情况下,您必须了解对象所有权如何传递以及何时可以安全地删除它。您可能想使用智能指针来处理这些问题

要点是:仅仅因为按引用传递使函数调用更便宜并不意味着您在任何情况下都必须使用它。