面向对象语言中类的3大特征之一—封装 的意义在于实现隐藏类的具体细节。但是为什么要把类的属性设置为private,而把类的成员函数置为public呢?
我的理解是为了提高安全性,防止用户随意修改类对象的属性值。
假设我们有名为user的类,如下所示:
#include <string>
using namespace std;
class user
{
public:
user()=default; //默认构造函数
user(string s,string p,int r): //构造函数1
id(s),password(p),root(r){}
user(string s,string p): //构造函数2 方法
id(s),password(p){}
void set_root(int i); //设置权限
void reset_password(); //重置密码
int get_root(); //返回权限
string get_password(); //返回密码
void grant(user&u); //授权函数(如管理员给用户授权)
private:
string id; //使用者id
string password; //密码 属性
int root; //权限
};
假设我们有user类对象student,如果我们把属性:id,password,root全置为public,那么用户可轻易通过student.root=i随意修改其权限属性,但是我们把属性置为私有,对象就不能直接访问类的私有成员。只有类的公有成员能直接访问私有成员,而类对象只能通过其共有成员间接