【问题标题】:Constructing local objects - const references构造局部对象——常量引用
【发布时间】:2017-08-24 10:25:01
【问题描述】:

最近我在代码审查期间看到了以下代码sn-p:

const QString& temp("some text");
const QString& temp1("some text1");

(...)

if (temp == "whatever")
{
}

// etc

由于这样的临时对象对我来说有点奇怪,我只想问是否有人可以解释以这种方式构造对象的优点/缺点是什么?我只会选择 const 对象 - 我错过了什么吗?

【问题讨论】:

  • 已审核的代码 - 这是什么意思?
  • '在代码审查期间' - 为措辞道歉 - 更新了描述。
  • 正确的人是写代码的人。如果他们无法证明为什么要这样写,那么显然它应该无法通过审查

标签: c++ reference temporary-objects


【解决方案1】:

你可以选择一个更好的例子。

使用 ref 变量的一些优点是:

1) 引用名称可能会为代码添加一些含义/文档。例如:

const QString& protocol_start("ABC1RQA666T");

字符串 "ABC1RQA666T" 毫无意义,但 protocol_start 可能会提供更多关于字符串代表什么的线索。

2) 如果引用被多次使用,那么使用引用可能更方便。

3) 使用引用相当“便宜”,因为毕竟它只是一个别名。

但在某些代码中,您可能会看到没有多次引用 ref 的实例,并且 ref 名称几乎没有增加额外的文档价值,因此在这些情况下它不是那么有用。

【讨论】:

  • 可以随时将temp 设为一个值,并在需要时通过 const 引用传递它。
猜你喜欢
  • 1970-01-01
  • 2016-02-15
  • 2015-08-27
  • 2023-04-04
  • 2012-12-02
  • 1970-01-01
  • 2020-04-30
  • 2012-08-14
  • 1970-01-01
相关资源
最近更新 更多