我发现了一段 C++ 代码,如下所示:
// constructor that creates a 2D vector _store[nRow][nCol]
FlexiMatrix::FlexiMatrix(int nRow)
{
for (int i = 0; i < nRow; i++){
_store.push_back( vector<int>() );
_store[i].push_back( 0 );
}
}
并_store
声明如下:vector< vector<int> > _store;
这似乎违反了我对局部变量和堆栈的理解。当我们退出这个构造函数时,本地创建的向量的内存不应该不存在吗?鉴于vector<int>.push_back()
需要别名引用作为其输入参数,因此更是如此,因此永远不会调用复制构造函数,并且push_back()
接收的是对局部变量的实际引用?