c++ - 在 C++ 中,引用总是更好的选择吗?

标签 c++ performance reference

<分区>

std::set<BigObject> set;
auto it = set.begin();
auto& it = set.begin();

同样,

std::string str("xxxxxxxxx");
std::string sub = str.substr(xx);
std::string& sub = str.substr(xx);

使用引用会减少调用析构函数的时间吗?为什么?

最佳答案

在适用且您可以负担得起复制的情况下,按值(value)是最佳选择。

原因是值语义易于理解(表现得像 int)并且比引用和指针更不容易出错。

优化器在处理指针和引用时遇到困难,因为它们可能会产生别名(指向相同的对象),或者这些对象可能会被其他线程引用,因此无法应用一些重要的优化。参见 Chandler Carruth: Optimizing the Emergent Structures of C++了解更多详情。

关于c++ - 在 C++ 中,引用总是更好的选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27545760/

相关文章:

c++ - 从 std::list 中随机删除?

c++ - 在 if 语句中 && 的后半部分进行无效操作是否安全?

javascript - 如何使用 jQuery 从 Web Worker Thread 中解析 XML

c++ - 使用指针简化我的 C++ 代码

c++ - C++ 中的 LONG float 和 double 有什么区别?

c++ - 为什么打印一个变量会改变它的值?

python - 如何使用自定义概率分布进行随机选择

performance - 为什么具有不同整数参数大小的相同函数更快?

algorithm - 在不依赖潜在故障的情况下实现 Tarjan 的强连接组件

Java, "pointer"相等与字符串比较