【发布时间】:2011-06-09 17:03:41
【问题描述】:
#include <iostream>
#include <vector>
using namespace std;
class base
{
int x;
public:
base(int k){x =k; }
void display()
{
cout<<x<<endl;
}
base(const base&)
{
cout<<"base copy constructor:"<<endl;
}
};
int main()
{
vector<base> v;
base obase[5]={4,14,19,24,29};
for(int i=0; i<5; i++)
{
v.push_back(obase[i]);
}
}
当数据被插入向量时,复制到该数据会使用复制构造函数进入向量。
当我运行这个程序时,
- 对于第一次插入 (i=0),将调用一次复制构造函数。
- 第二次插入(i=1),调用了两次复制构造函数
- 第三次插入(i=3),调用了三次复制构造函数
- 对于第四次插入 (i=3),调用了四次复制构造函数
- 对于第五次插入(i=4),调用了五次复制构造函数
请谁能告诉我为什么会这样?每次插入,拷贝构造函数不应该只调用一次吗?
【问题讨论】:
标签: c++