01-3 成员属性设置为私有
在实际使用、开发之中,一般都会把成员属性设置为私有,也就是private
。这样会产生如下的好处:
优点 1:将成员属性设置为私有,可以自己控制读写权限。
优点 2:对于写权限,我们可以检测数据的有效性。
-
可以自己控制读写权限。
#include
#include using namespace std; class person { private: string m_name; int m_age; int m_password; public: void setname(string newname) { m_name = newname; } string getname() { return m_name; } void setage(int age) { m_age = age; } int getpassword() { return m_password; } }; int main() { class person p1; int out = 1; while (1 <= out <= 4) { cout << "输入1修改姓名,输入2获取姓名,输入3设年龄,输入4读取密码,其他退出。" << endl; cin >> out; if (out == 1) { cout << "修改姓名:"; string name; cin >> name; p1.setname(name); } else if (out == 2) { string name = p1.getname(); cout << "姓名:" << name << endl; } else if (out == 3) { cout << "设年龄:"; int age; cin >> age; p1.setage(age); } else if (out == 4) { int password = p1.getpassword(); cout << "姓名:" << password << endl; } else { cout << "退出了。" << endl; break; } } system("pause"); return 0; } 在上面的代码里,我们设计了一个类,这个类表示的是一个人。
姓名 设置为可读可写 年龄 设置为只读 密码 设置为只写
为了完成这些要求,我们设计一些公共权限(
public
)的接口(应该可以称呼为接口),这样我们就可以在下面的代码中访问。(可以试一下。)这样子我们就可以设置访问权限。 -
我们可以检测数据的有效性
我们还是上面的例子,这时候加一个,允许写入年龄,但是年龄范围为 0 到 150。
那么我们可以设计一个新的接口:
void setage(int age) { if (age < 0 or age > 150) { cout << "pa" << endl; return; } m_age = age; cout << "修改成功" << endl; return; }
那么运行一下:
输入1修改姓名,输入2获取姓名,输入3读取年龄,输入4设置密码,输入5写入年龄,其他退出。 5 修改年龄:10 修改成功 输入1修改姓名,输入2获取姓名,输入3读取年龄,输入4设置密码,输入5写入年龄,其他退出。 5 修改年龄:180 pa 输入1修改姓名,输入2获取姓名,输入3读取年龄,输入4设置密码,输入5写入年龄,其他退出。 3 年龄:10
在成员函数中,可以设计检测数据的有效性。
最后看一眼写出来的东西:
#include <iostream>
#include <string>
using namespace std;
//成员属性设置为私有
//优点 1:将成员属性设置为私有,可以自己控制读写权限。
//优点 2:对于写权限,我们可以检测数据的有效性。
//设计一个人的类
class person
{
private:
//姓名 设置为可读可写
string m_name;
//年龄 设置为只读 再加上可写
int m_age;
//密码 设置为只写
int m_password;
public:
//设置姓名
void setname(string newname)
{
m_name = newname;
}
//获取姓名
string getname()
{
return m_name;
}
//读取年龄
int getage()
{
return m_age;
}
//写入密码
void setpassword(int password)
{
m_password = password;
}
//写入年龄 范围为0-150
void setage(int age)
{
if (age < 0 or age > 150)
{
cout << "pa" << endl;
return;
}
m_age = age;
cout << "修改成功" << endl;
return;
}
};
int main()
{
class person p1;
int out = 1;
while (1 <= out <= 4)
{
cout << "输入1修改姓名,输入2获取姓名,输入3读取年龄,输入4设置密码,输入5写入年龄,其他退出。" << endl;
cin >> out;
if (out == 1)
{
cout << "修改姓名:";
string name;
cin >> name;
p1.setname(name);
}
else if (out == 2)
{
string name = p1.getname();
cout << "姓名:" << name << endl;
}
else if (out == 3)
{
int age = p1.getage();
cout << "年龄:" << age << endl;
}
else if (out == 4)
{
cout << "修改密码:";
int password;
cin >> password;
p1.setpassword(password);
}
else if (out == 5)
{
cout << "修改年龄:";
int age;
cin >> age;
p1.setage(age);
}
else
{
cout << "退出了。" << endl;
break;
}
}
system("pause");
return 0;
}
:-)