构造局部对象——常量引用
Posted
技术标签:
【中文标题】构造局部对象——常量引用【英文标题】: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 对象 - 我错过了什么吗?
【问题讨论】:
已审核的代码 - 这是什么意思? '在代码审查期间' - 为措辞道歉 - 更新了描述。 正确的人是写代码的人。如果他们无法证明为什么要这样写,那么显然它应该无法通过审查 【参考方案1】:你可以选择一个更好的例子。
使用 ref 变量的一些优点是:
1) 引用名称可能会为代码添加一些含义/文档。例如:
const QString& protocol_start("ABC1RQA666T");
字符串 "ABC1RQA666T" 毫无意义,但 protocol_start 可能会提供更多关于字符串代表什么的线索。
2) 如果引用被多次使用,那么使用引用可能更方便。
3) 使用引用相当“便宜”,因为毕竟它只是一个别名。
但在某些代码中,您可能会看到没有多次引用 ref 的实例,并且 ref 名称几乎没有增加额外的文档价值,因此在这些情况下它不是那么有用。
【讨论】:
可以随时将temp
设为一个值,并在需要时通过 const 引用传递它。以上是关于构造局部对象——常量引用的主要内容,如果未能解决你的问题,请参考以下文章