我是 C++ 的新手。我遇到了一些代码并感到困惑
vector<int> vec{3,1,4,1,5};
vector<int> &vecRef = vec;
auto vecCopy = vecRef; // makes copy of vec
auto &vecRef2 = vecRef; // reference
我了解了 c++ 中引用类型的用法,并且我理解了为什么它对不可变类型很有用。但是对于 vector 这样的可变类型,vector vecCopy = vec 和 vector& vecRef = rec 之间有什么区别?他们不都是 vec 的别名吗?
最佳答案
But for mutable types like vectors, what's the difference between vector vecCopy = vec and vector& vecRef = rec? Aren't they both alias to vec?
没有。一个是整个 vector 的拷贝。另一个是对相同内容的引用。
您的示例代码是人为设计的。我想不出您这样做的任何理由:
vector<int> vec{3,1,4,1,5};
vector<int> &vecRef = vec;
您始终通过引用传递变量。但我想不出为什么我会像这样引用局部变量,除了说明引用而不是拷贝的示例。
所以:vecCopy 是一个完整的不同 vector ,有自己的内容。在代码的末尾,它的内容与 vec 相同,但在那之后,您可以添加一个或另一个,它们开始发散。 vecRef 是对完全相同数据的引用。如果您将它们视为(在幕后)指针,那么它们指向同一个对象。
关于c++ - 为什么在 C++ 中对可变变量使用引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57464144/