在c ++中,引用总是更好的选择

时间:2014-12-18 11:41:56

标签: 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);

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

1 个答案:

答案 0 :(得分:2)

在适用时,按价值是最佳选择,您可以负担复制费用。

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

优化器在处理指针和引用时很难,因为它们可以别名(指向相同的对象),或者可以从其他线程引用这些对象,因此无法应用某些重要的优化。有关详细信息,请参阅Chandler Carruth: Optimizing the Emergent Structures of C++