2014-01-11 50 views
0

我正在学习自己的C++。要了解一个Vector是如何工作的,我写了下面的有些奇怪的代码:引用同一对象的向量

Schuif是一个用户定义的类,ArSize的值是10

============= =========

Schuif schuif; 
Schuif &TempSchuif = schuif; 

for(size_t i=0; i<ArSize; ++i) 
{ 
    cout << "vector size = " << SchuifVector.size() << endl; 
    cout << "vector capacity = " << SchuifVector.capacity() << endl; 

    SchuifVector.push_back(TempSchuif); 
} 

有了这个代码我期望具有10个元素,其中的所有元素包含到相同schuif对象的引用的载体来结束。

但是,当我编译这段代码时,我有一个带有10个不同对象schuif的向量。

这让我想到什么是真正的矢量容器的push_back函数?它接合的原因是它没有添加对矢量的引用,而是制作了schuif的副本并将该引用放入矢量中。

这是正确的吗?

回答

1

不,这不会发生。 push_back会将其参数复制到矢量中,因此最终得到的矢量包含schuif的十个副本,而不是十个副本。

您不能创建在C++中引用的一个载体,但您可以创建一个指针的向量:

vector<Shuif *> v; 
for (int i = 0; i < ArSize; i++) { 
    v.push_back(&schuif); 
} 
+0

谢谢Larsmans, – Vic1