effective stl读书笔记 —— Item 3

来源:互联网 发布:快刀软件破解版 编辑:程序博客网 时间:2024/05/22 01:39

  Item 2(确保容器中的对象拷贝正确而高效)

容器对象的传递是按拷贝的,也就是说当你将一个对象传给容器时,传递的是它的一个拷贝(也就是掉用了对象的拷贝构造函数和operator=),进去的是拷贝,出来的也是拷贝(copy in , copy out)。
一个要注意的地方是拷贝时对象的剥离(splicing),也就是你创建了一个存放基类(或指向基类的指针)的容器,却向其中插入派生类的对象,那么在向容器拷贝派生类对象时,会导致派生类特有部分丢失(如派生类特有的成员变量、非虚函数等):
vector<Widget> vw;
         class SpecialWidget: public Widget {……};         // SpecialWidget 是 Widget的派生类
         SpecialWidget sw;
         vw.push_back (sw);             //sw特有部分的数据将丢失
 
原创粉丝点击