优点1:将所有成员属性设置为私有,可以自己控制读写权限
#include<iostream>
#include<string.h>
using namespace std;
class Person
{
public:
void setname(string name)
{
m_name = name;
}
string getname()
{
return m_name;
}
int getage()
{
int age = 20;
return age;
}
void setlover(string lover)
{
m_lover = lover;
}
private:
//姓名 可读可写
string m_name;
//年龄 只读
int m_age;
//情人 只写
string m_lover;
};
int main()
{
Person p;
//p.m_name = "sd";//私有权限,不可访问
p.setname("carbon");
cout << "姓名为:" << p.getname() << endl;
//年龄
//p.getage = 88;//有错误,不能修改年龄
cout << "年龄为:" << p.getage() << endl;
//情人 只写
p.setlover("hello");//设置情人
system("pause");
return 0;
}
比如这个代码,将所有变量都在设置为私有,然后在public里面分别添加各个对应的函数就可以实现各种权限。
优点2:对于写权限,我们可以检测数据的有效性
比如:
#include<iostream>
#include<string.h>
using namespace std;
class Person
{
public:
void setname(string name)
{
m_name = name;
}
string getname()
{
return m_name;
}
//将年龄设置为可读可写的 ,但年龄有一定的范围,超过这个范围就为无效。
void setage(int age)
{
if (age < 0 || age>150)//限制一个范围
{
cout << "输入有误" << endl;
age = 0;
}
m_age = age;
}
int getage()
{
//int age = 20;
return m_age;
}
void setlover(string lover)
{
m_lover = lover;
}
private:
//姓名 可读可写
string m_name;
//年龄 只读
int m_age;
//情人 只写
string m_lover;
};
int main()
{
Person p;
//p.m_name = "sd";//私有权限,不可访问
p.setname("carbon");
cout << "姓名为:" << p.getname() << endl;
//年龄
//p.getage = 88;//有错误,不能修改年龄
p.setage(999);
cout << "年龄为:" << p.getage() << endl;
//情人 只写
p.setlover("hello");//设置情人
system("pause");
return 0;
}
当我们把年龄输入999时,就会提示错误,这样以后我们在复杂的代码中如果输入了错误的数据的话就会有一个检测作用。