liuzhengyuan 发表于 2020-5-8 17:14:39

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;
}

下一篇:? ? ?

永恒的蓝色梦想 发表于 2020-5-8 17:17:43

protect:???我呢?

liuzhengyuan 发表于 2020-5-8 17:35:49

明天再更新吧{:10_266:}

liuzhengyuan 发表于 2020-5-8 17:36:33

永恒的蓝色梦想 发表于 2020-5-8 17:17
protect:???我呢?

{:10_250:}
页: [1]
查看完整版本: 005 - 类和对象 ④ private & pubilc 关键字 + getter & setter