将成员属性设置为私有,主要有如下两个优点:
1、可以自己控制读写权限;
2、对于写的权限,可以对写入数据的有效性进行检验;
将成员属性设置成私有后,无法直接访问,如下:
所以,对于设置成私有的成员属性,通过会再设置public类型的接口,使之能够进行读和写;比如对于姓名而言,可以设置可读,年龄可以设置为可以读写,如下:
class Person
{
private:
//姓名 只读
string m_Name;
//年龄 可读可写
int m_Age;
//爱好 只写
string m_Interest;
public:
//读年龄
int getAge()
{
return m_Age;
}
//写年龄
void setAge(int age)
{
m_Age = age;
}
//读姓名
string getName()
{
m_Name = "张三";//姓名初始化
return m_Name;
}
};
int main()
{
Person p;
p.setAge(13);
cout << p.getAge() << endl;
cout << p.getName() << endl;
system("pause");
return 0;
}
运行结果如下,说明通过成员属性私有化可以对读写权限进行控制;
除此之外,可以对写入的数据进行限制,如输入年龄时限制为大于18岁,小于150岁的才可以写入,不在该范围的则提示“非法输入”,如下在写入中加入判断:
void setAge(int age)
{
if (age < 18 || age > 150)
{
m_Age = 0;//初始化
cout << "非法输入" << endl;
}
else
{
m_Age = age;
}
}
运行结果为:
同样,也可以只为某一属性提供写入的接口,从而达到控制属性读写权限的目的;