2014-01-11 49 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