c++ - 构造局部对象——常量引用

标签 c++ reference temporary-objects

最近我在代码审查中看到了以下代码片段:

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

(...)

if (temp == "whatever")
{
}

// etc

因为这样的临时对象对我来说看起来有点奇怪,我只是想问问是否有人可以解释以这种方式构造对象的优缺点是什么?我会选择 const 对象 - 我会错过那里的任何东西吗?

最佳答案

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

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

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

const QString& protocol_start("ABC1RQA666T");

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

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

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

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

关于c++ - 构造局部对象——常量引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45859138/

相关文章:

C++ 可变参数模板打包到 std::array 并解包

c++ - 从继承自 std::enable_shared_from_this 的类继承后的 std::bad_weak_ptr

c# - .NET 项目引用 : How to reference a dll via a referenced project?

c++ - 使用旧的 C 库调用临时对象的方法会导致编译器错误

c++ - 临时延长生命周期

c++ - 指针复制到范围外c++

java - 如何删除传递给 Java 方法的对象?

.net - .NET程序集引用对我来说是一个循环

c++ - 存储在类中的闭包中通过引用捕获的临时对象的生命周期

c++ - OpenCV 矩阵运算导致 YUV 图像颜色损坏