相关背景知识:
构造函数:类的特殊成员函数,当创建类对象的时候,系统自动调用构造函数,用于完成一些初始工作。特点:构造函数名与类名相同、没有返回值,返回void也不行,但可以无值返回、可以不定义构造函数,编译器为类生产一个默认的构造函数,称为合成的默认构造函数,它会初始化类中的成员。构造函数可以带0到多个参数,可以重载;
析构函数:类的特殊成员函数,当销毁对象时,系统自动调用析构函数,一般用于完成清理工作。特点:系统函数名为类名前加~、不能有返回值、不能有参数、不能重载,可以不定义析构函数,编译器为我们生成一个合成的析构函数,它会按照初始化的逆序析构成员对象,但不会销毁指针所指的对象
拷贝构造函数:类的特殊成员函数,它的参数为该类的常量引用型,在对象拷贝时调用拷贝构造函数,对象拷贝不会调用构造函数,但是销毁时却会调用析构函数,所以需要定义拷贝构造函数,否则在有资源申请和释放的类中会出现问题。产生拷贝的情况:对象定义时用另一个对象的值初始化该对象、对象作为函数的参数按值传递、对象作为函数的返回值按值返回。
关于vector内存的分配,参考上一篇文章:STL中vector内存分配策略剖析
#include <vector>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;