7.2 访问控制与封装
class Sales_data {
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), revenus(p * n) {}
Sales_data(istream&);
string isbn() const { return bookNo; }
Sales_data& combine(const Sales_data&);
double avg_price() const;
private:
string bookNo;
unsigned units_sold = 0;
double revenus = 0.0;
};
- 如果我们使用
struct
关键字,则定义在第一个访问说明符之前的成员是public
的- 如果使用
class
关键字,则这些成员是private
的
7.2.1 友元
类可以允许其他类或者函数访问它的非公有成员,方法是令其他类或者函数成为友元
class Sales_data {
friend Sales_data add(const Sales_data&, const Sales_data&);
friend istream& read(istream&, Sales_data&);
friend ostream& print(ostream&, const Sales_data&);
};
友元声明只能出现在类定义的内部,但是在类内出现的具体位置不限
一般最好在类开始或结束的位置集中声明友元