首页 > 代码库 > 【c++ primer, 5e】访问控制与封装
【c++ primer, 5e】访问控制与封装
练习
7.16
无,类的接口定义在public说明符之后,类的实现细节定义在private说明符之后。
7.17
有。类成员的默认访问权限不同。class的类成员默认为private,struct的则默认为public。
通常来说,当我们希望定义的类的所有成员是public的时候就用struct。
7.18
p242
7.19
【友元】
练习
7.20
声明的类外函数需要直接引用类内的私有成员的时候要用到友元函数。
设计原因:并非所有的、与某个类相关的函数都适合声明成那个类的成员函数,例如书上的add(obj, obj);
利弊:不详。。。
7.21
7.22
#include <iostream> #include <string> using namespace std; // Person.h class Person { friend istream &read(istream &is, Person &p); public: Person() = default; Person(const string &name): name(name) {} Person(const string &name, const string &address): name(name), address(address) {} Person(istream&); string getName() const { return name; } string getAddress() const { return address; } private: string name; string address; }; istream &read(istream&, Person&); ostream &print(ostream&, const Person&); // Person.cpp istream &read(istream &is, Person &p) { is >> p.name >> p.address; return is; } ostream &print(ostream &os, const Person &p) { os << p.getName() << " " << p.getAddress(); return os; } Person::Person(istream &is) { read(is, *this); } // main.cpp int main() { Person p1; Person p2("xklf"); Person p3("llyy", "china"); Person p4(cin); print(cout, p1) << endl; print(cout, p2) << endl; print(cout, p3) << endl; print(cout, p4) << endl; return 0; }
【c++ primer, 5e】访问控制与封装
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。