上面的解释了为什么两个函数仅仅返回值不同为什么还能重载。
对象的复制
隐式地复制
double d;
vector<int> vi;
d = median(vi); // copy vi into the parameter in median
string line;
vector<string> words = split(line); // copy the return value from split into words
显式的复制
vector<Student_info> vs;
vector<Student_info> v2 = vs; // copy vs into v2
赋值操作符
将一个对象的值赋给同一数据类型的另一个对象
声明
template <typename T> class Vec {
public:
Vec& operator=(const Vec&);
// as before
};
赋值 vs. 初始化
赋值将重写一个已存在对象的值,调用operator =;
初始化将创建一个新对象,同时为此新对象提供初始值,调用复制构造函数。
v
vector<string> split(const string&); // function declaration
vector<string> v; // initialization
v = split(line); // 先复制返回对象,再用此拷贝进行赋值