Vector push_back 执行过程
push_back(a) 过程要分两种情况:
当有定义a的拷贝构造器的时候
首先是调用a的拷贝构造器;
如果还有成员变量没有被初始化,那么会继续调用成员变量的无参数构造器,例如int型会为0,指针为空。
没定义拷构造器
执行浅复制。但如果成员变量声明过拷贝函数,那么会自动调用成员变量的拷贝构造器。
值得注意的是,指针类型的拷贝是就只是多出一个指针指向同一个区域而已。这意味着如果你push进了元素是指针或者该元素含有指针变量且析构函数会释放所指空间,那么pop出来,前者会导致a成为野指针;而后者如果再析构函数之后没有释放空间后的指针指向NULL,也会导致野指针出现。
说明以下哈!学生党!这是看了一些资料,然后自己实验出来的,有误请指出来。