C++之数据的封装

8 篇文章 0 订阅

放假的时候学习了数据的封装,结果一个假期过去什么都不记得了,今天重新看了一遍,整理记录下来啦

至于为什么封装数据-.-菜猪不明白,但是就是觉得会减少很多bug!更严谨的东西基本都是更好哒吧~

首先先说类的实例化

我们定义一个这样的类

class  TV
{
public:
    char name[20];
    int type;
    void changVol();
    void power();
};

从栈实例化对象

int main()
{
    TV tv;
    TV tv[20];
    return 0;//系统自动释放申请的空间
}

从堆实例化对象

int main( )
{
    TV *p=new TV();
    TV *q=new TV[20];
    if(p==NULL)
    {
      return 0;//申请内存失败,退出函数
    }
    if(q==NULL)
    {
      return 0;//申请内存失败,退出函数
    }
    delete p;
    p=NULL;
    delete []q;//养成习惯申请的空间在程序结束后释放,如果是指针数组,delete p只代表的销毁第一个空间
    q=NULL;
    return 0;
}

首先,其实用class直接写类,下面用的时候就用上面的引用的方式,ok的,但是这不符合面向对象的基本思想了,在后面也会有很多的问题,数据封装是一种更好的方式,能在自身的函数内对数据进行约束。

下面我会写一个完整的数据封装的函数

#include <iostream>

using namespace std;

class Student
{
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 getSorce()
    {
        return m_iSorce;
    }
    void initSorce()
    {
        m_iSorce=0;
    }
    void study(int _sorce)
    {
        m_iSorce+=_sorce;
    }//通过学习获得学分
private:
    string m_strName;
    string m_strGender;
    int m_iSorce;
};
int main()
{
    Student stu;
    stu.initSorce();//为了数据的稳定数据开始都要初始化
    stu.setName("zhuzhu");
    stu.setGender("女");
    stu.study(5);
    stu.study(3);
    cout << stu.getName()<<" "<<stu.getGender()<<" "<<stu.getSorce()<< endl;
    return 0;
}

我的理解呢就是把数据都放在类里,实例化之后就实现了对对象的操作,把数据的处理写在程序里,实例化的时候通过调用这些函数来对数据进行操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值