005 - 类和对象 ④ private & pubilc 关键字 + getter & setter
本帖最后由 liuzhengyuan 于 2020-7-6 12:50 编辑待更新{:10_268:}
C++ 自学心得 |005 - 类和对象 ④ private & pubilc 关键字 + getter & setter
上一篇:004 - 类和对象(class & object)③ 类成员函数(Class Function)
大概总结了一下
关键字含义
public成员可以在类外部被访问
private成员只可以在类内部被访问
protect可以在派生类(即子类)被访问
1,getter & setter
这段代码可以统计学生的分数
#include<bits/stdc++.h>
using namespace std;
class Exam {
public:
string student_name;
int score;
Exam(string aname, int ascore)
{
student_name = aname;
score = ascore;
}
};
int main()
{
Exam first("A", 98);
cout << first.student_name << "考了" << first.score << "分";
}
但是也会有人乱改分数比如:
Exam first("A", 300);{:10_324:}300分……
防止乱改分数的人的最有效方法就是 getter and setter{:10_334:}
先说说 private 关键字
不妨把刚刚的代码改成:
score 变量是 Exam 类私有的
所以主函数访问不了 score 变量,所以报错……
#include<bits/stdc++.h>
using namespace std;
class Exam {
public:
string student_name;
Exam(string aname, int ascore)
{
student_name = aname;
score = ascore;
}
private:
int score;
};
int main()
{
Exam first("A", 98);
cout << first.student_name << "考了" << first.score << "分";
}
结果是:
报错#%@
getter & setter 代码
乱设置分数的,最后都会被强制设置为 0 分{:10_334:}
#include<iostream>
using namespace std;
class Students {
private:
int score;
public:
string name;
Students(string aname, int ascore)
{
name = aname;
setscore(ascore);
}
bool ispass()
{
if(score<60)
{
return false;
}
return true;
}
void setscore(int ascore)
{
if(ascore<0 || ascore>100)
{
score = 0;
}
else
{
score = ascore;
}
}
int getscore()
{
return score;
}
};
int main()
{
Students Andy("^_^",300);
cout<<Andy.getscore();
return 0;
}
下一篇:? ? ? protect:???我呢? 明天再更新吧{:10_266:} 永恒的蓝色梦想 发表于 2020-5-8 17:17
protect:???我呢?
{:10_250:}
页:
[1]