C++ STL vector push_back

Vector push_back 执行过程

push_back(a) 过程要分两种情况:

当有定义a的拷贝构造器的时候

首先是调用a的拷贝构造器;
如果还有成员变量没有被初始化,那么会继续调用成员变量的无参数构造器,例如int型会为0,指针为空。

没定义拷构造器

执行浅复制。但如果成员变量声明过拷贝函数,那么会自动调用成员变量的拷贝构造器。
值得注意的是,指针类型的拷贝是就只是多出一个指针指向同一个区域而已。这意味着如果你push进了元素是指针或者该元素含有指针变量且析构函数会释放所指空间,那么pop出来,前者会导致a成为野指针;而后者如果再析构函数之后没有释放空间后的指针指向NULL,也会导致野指针出现。

说明以下哈!学生党!这是看了一些资料,然后自己实验出来的,有误请指出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值