首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

vector里插入类的对象有关问题

2013-03-22 
vector里插入类的对象问题。#includeiostream#include vector#include fstreamusing namespace stdo

vector里插入类的对象问题。
#include<iostream>
#include <vector>
#include <fstream>
using namespace std;
ofstream out("1.txt");
class Rock{
    public:
       Rock(){out <<"Rock()"<<endl;}
       Rock(const Rock&){out <<"const Rock&()"<<endl;}
       ~Rock(){out <<"~Rock()"<<endl;}
};

int main()
{
    Rock a;
    Rock b;
    Rock c;
    vector<Rock>v;
    v.push_back(a);
    v.push_back(b);
    v.push_back(c);
    return 0;
}
运行结果为:
Rock()
Rock()
Rock()
const Rock&()
const Rock&()
const Rock&()
~Rock()
const Rock&()
const Rock&()
const Rock&()
~Rock()
~Rock()
~Rock()
~Rock()
~Rock()
~Rock()
~Rock()
~Rock()
看不懂。。
vector 拷贝构造函数
[解决办法]
去看看insert的源码估计会有所收获
[解决办法]
你单步调试就不难发现:
 第一次插入 const Rock&()出现一次
 第二次插入 const Rock&()出现2次

你多弄几个插入就明白了。
每次插入vector会对容器里面的元素就行调整会设计到对象的拷贝...
 我认为是这样!
[解决办法]
应该是插入向量的时候会拷贝一份、你在vector释放的时候也会拷贝出来销毁 所有对象拷贝会多次调用

你可以试着定义:vector<Rock *>v; 这样就不会出现拷贝函数被调用了。

热点排行