13.18 Employee类及其测试代码如下:
#include <iostream>
#include <string>
using namespace::std;
class Employee {
friend void get_info(const Employee &s);
public:
Employee() { id = num++; }
Employee(const string &s): name(s) { id = num++; }
Employee(const Employee &r) {
name = r.name;
id = num++;
}
/* 创建左侧对象时已经分配了唯一的id,不复制右侧对象的id */
Employee& operator=(Employee &rhs) {
name = rhs.name;
return *this;
}
private:
string name;
unsigned id;
static unsigned num;
};
unsigned Employee::num = 0;
void get_info(const Employee &s)
{
cout << s.name << "--" << s.id << endl;
}
int main()
{
Employee e1("James"); //接受字符串参数的构造
Employee e2 = e1; //拷贝构造
Employee e3; //默认构造
e3 = e1; //复制
get_info(e1);
get_info(e2);
get_info(e3);
return 0;
}
<