我是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的别名吗?

最佳答案



不。一个是整个 vector 的副本。另一个是对它的引用。

您的示例代码是人为设计的。我无法想到您为什么要这样做:

vector<int> vec{3,1,4,1,5};
vector<int> &vecRef = vec;

您始终通过引用传递变量。但是我无法想象为什么要引用这样的局部变量,除了说明与复制相对的引用示例之外,我无法想象。

因此:vecCopy是一个具有其自身内容的完整DIFFERENT vector 。在代码的末尾,其内容与vec相同,但是在此之后,您可以添加一个或另一个,然后它们开始发生分歧。 vecRef是对完全相同的数据的引用。如果您将它们视为(幕后的)指针,则它们指向同一对象。

10-06 07:23
查看更多