7.16 访问说明符指定其后成员的访问级别,其出现次数没有严格规定,有效范围直到出现下一个访问说明符或到达类结尾。可在整个程序内被访问的成员定义为public的;只能被类的成员函数访问,不能被使用该类的代码访问,定义为private的。
7.17 默认访问权限不同,struct所有成员是public的,class所有成员是private的。
7.18 封装可以隐藏类的实现细节,使用private封装成员,可以分离类的接口和实现,保护成员不被使用该类的代码访问。
7.19 可以把数据成员name和address设置为private的,类的构造函数和两个获取成员的函数设置为public。
7.20 当类允许其他类或函数访问其私有成员时,可以将其他类或函数声明为友元。友元可以访问类的私有成员,弊端是可能破坏类的封装。
7.21 修改struct Sales_data为class Sales_data
class Sales_data {
friend Sales_data add(const Sales_data &lhs, const Sales_data &rhs);
friend istream &read(istream &is, Sales_data &item);
friend ostream &print(ostream &os, const Sales_data &item);
public:
Sales_data()= default;
Sales_data(const string &s): bookNo(s) { }
Sales_data(const string &s, unsigned n, double p):
bookNo(s), units_sold(n), revenue(p * units_sold) { }
Sales_data(istream &is) { read(is, *this); }
string isbn() const { return bookNo; };
Sales_data& combine(const Sales_data&);
private:
string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};
7.22
class Person {
public:
Person() = default;
Person(const string &name, const string &add): name(name), address(add) { }
string getName() const { return name; }
string getAddress() const { return address; }
private:
string name;
string address;
};
本文深入探讨C++中类的访问控制与封装概念,解释public与private成员的区别,以及如何通过封装保护类的内部状态。同时,介绍了友元机制及其潜在风险,展示了如何在类中正确使用构造函数和成员函数。
216

被折叠的 条评论
为什么被折叠?



