构造函数。创建类的时候对类的初始化操作,有多种方式。
定义在private访问说明符后的成员,可以被类的成员函数或者友元访问,但不能被使用该类的代码访问。
标准输入输出流无法拷贝,只能引用。
struct Person {
//友元
friend istream& read(istream& is, Person& people);
friend void rewrite(Person &p,const string& n, const string& a);
//构造函数
public:
Person() :name("name"), addr("address") {};
Person(istream& is);
Person(const string& n) : name(n) {}
Person(const string& n, const string& a) :name(n), addr(a) {}
string id() const { return name; }
string dr() const { return addr; }
private:
//
string name;
string addr;
};
istream &read(istream& is, Person& people) {//返回值是一个引用
is >> people.name >> people.addr;
return is;
}
ostream& print(ostream& os, const Person& people) {
os << people.id() << " " << people.dr();
return os;
}
void rewrite(Person &p, const string& n, const string& a) {
p.addr = a;
p.name = n;
}
Person::Person(istream& is) {
read(is, *this);
}