构造局部对象——常量引用

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 引用传递它。

以上是关于构造局部对象——常量引用的主要内容,如果未能解决你的问题,请参考以下文章

扩展1

java的this关键字理解

面向对象的一些关键字

拷贝构造函数详解

拷贝构造函数详解

返回对象和返回引用