前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++:数据的封装,认识面向对象编程

C++:数据的封装,认识面向对象编程

作者头像
字节星球Henry
发布2021-08-09 16:45:43
3860
发布2021-08-09 16:45:43
举报

数据的封装

需要实现的功能:存储最基本的学生信息。

涉及内容:类,定义成员函数,调用成员函数,保护成员

如,此实例中的:

代码语言:javascript
复制
    string m_strName;
    string m_strGender;
    int m_iScore;

这三个成员即为受保护的三个私有数据成员。

源代码

源代码中类的数据成员,成员函数都进行了注释,方便理解。

代码语言:javascript
复制
#include <iostream>
#include <string>

using namespace std;
/**********************************************/
/*             数据的封装
1.姓名 name
2.性别 gender
3.学分(只读) score
4.学习情况 study  */
/**********************************************/
class students
{
public://公共访问
    void setName(string _Name)//成员函数
    {
        m_strName = _Name;
    }
    string getName()//成员函数
    {
        return m_strName;
    }
    void setGender(string _Gender)//成员函数
    {
        m_strGender = _Gender;
    }
    string getGender()//成员函数
    {
        return m_strGender;
    }
    int getScore()//成员函数
    {
        return m_iScore;
    }
    void iniScore()//成员函数
    {
        m_iScore = 0;
    }
    void study(int _Score)//成员函数
    {
        m_iScore += _Score;
    }

private://私有保护
    string m_strName;//数据成员
    string m_strGender;
    int m_iScore;
};
int main()
{
    string name, gender;
    students stu;
    stu.iniScore();
    int score;
    cout << "welcome to students score manage system." << endl
         << "input student information:" << endl
         << "name:";
    cin >> name;
    stu.setName(name);
    cout << endl
         << "gender:";
    cin >> gender;
    stu.setGender(gender);
    cout << endl
         << "score(if score is 0,input '0' to break increase score,please.):";
    cin >> score;
    stu.study(score);
    while (score != 0)
    {
        cout << "iuput next score:";
        cin >> score;
        stu.study(score);
    }
    cout << endl
         << "/******************"
         << "Students Database"
         << "******************/" << endl;
    cout << "[student name:" << stu.getName() << "] [student gender:" << stu.getGender() << "] [student score:" << stu.getScore() << "]" << endl;
    cout << "/******************"
         << "Students Database"
         << "******************/" << endl;
    return 0;
}

我们在之前的C语言中,通常用结构体struct来实现这类需求,那么在C++中我们将认识新的方法-类class来实现。

类class构成了实现C++面向对象编程的基础,在类的说明中,要么是数据成员,要么是成员函数,他们要么说明为public,要么为protected,要么为private。

类具有封装性,这也解释了为什么此文的标题为数据的封装,当类的成员声明为private的时候,外部不能对其访问,如以上源代码students类中的m_strName,m_strGender和m_iScore,当声明为public的时候,则在任何地方都可以访问。

三种访问权限

public:可以被任意实体访问

protected:只允许子类及本类的成员函数访问

private:只允许本类的成员函数访问

通过本源代码我们认识了什么是类,什么是成员函数,什么又是数据成员,这将使我们踏入面向对象编程的学习之路。

此源代码在线调试地址:点击进入


编辑:Henry 2020-10-02

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据的封装
  • 源代码
  • 三种访问权限
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档