<分区>
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);
使用引用会减少调用析构函数的时间吗?为什么?
<分区>
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/