代码改变世界

编写Vec类

2012-06-08 21:15  youxin  阅读(473)  评论(0编辑  收藏  举报

上面的解释了为什么两个函数仅仅返回值不同为什么还能重载。

 对象的复制

隐式地复制

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); // 先复制返回对象,再用此拷贝进行赋值