1类中声明private
类的作者将类中成员声明为私有之后,用户(类的使用者)就不可以直接去访问这个成员,必须借用接口(类提供的函数)去访问。
(将其它无关的函数隐藏了)
class Quote {
public:
string isbn() const { return bookNo; }
private:
string bookNo;
protected:
double price = 0.0;
};
void main() {
Quote quo1("aaa",123);
//cout << quo1.bookNo; 错误,Quote::bookNo已声明不可访问
cout << quo1.isbn();
}
类的用户使用Quote类定义了一个对象quo1,然后想直接调用quo1.bookNo,此时显示:
如果用户想去访问private成员就应该确定类的作者有没有定义一个借口函数,如Quote中isbn()。
2类成员函数的const后缀
string isbn() const { return bookNo; }
//const后缀表明该函数是一个只读函数,该函数不能修改所有成员变量
3没有与这些操作数匹配的运算符 <<
因为一开始没有导入头文件#include<string>,<<这个只能匹配基础类型数据,而由于没有导入string类,所以<<运算符没有重载就发生了错误。应该是注意:自己定义的类想用“<<”输出的话必须将其重载