我在尋找理解如何在C++中實現vector
。有一個previous question問這個,所以我看了一下,我有一個小問題。假設在鏈接的問題的實施是正確的,讓我們來看看下面的代碼:C++:向量實現和動態內存分配
int main(){
Vector<int> test2 = test_Vector();
cout << test2[0] << endl;
return 0;
}
// below is NOT the STL vector object, but the one in the linked question,
// in which the asker tries to implement STL vector himself/herself
Vector<int> test_Vector(){
Vector<int> test;
test.push_back(5);
return test;
}
據我瞭解,在test
Vector
對象是在本地創建的,所以當test_Vector
方法返回,本地對象超出範圍,從而調用析構函數和delete
-動態數組。由於代碼實際工作和5打印,我想我錯了。什麼是正確的解釋?
請參閱:[Return Value Optimization(RVO)](http://en.wikipedia。org/wiki/Return_value_optimization) – 2013-03-20 23:23:26
有關RVO的觀點非常重要:通常程序員對於C++來說是新手,因爲擔心昂貴的副本而找不到有價值的對象。很多時候,根本沒有複製。 – juanchopanza 2013-03-20 23:25:44