C++_类和对象1_OPPO思想、封装

计算机用来模拟现实世界,用计算机语言解决现实中的问题,现实中的事务称为实体,实体存在属性、行为,实体经过抽象这一过程抽象为ADT(抽象数据类型),ADT存在属性、行为,ADT经计算机处理生成类,类存在成员变量和成员方法,类经过实例化生成对象,对象存在成员变量和成员方法,

行为的执行者是实体,成员方法的执行者是对象

将实体货物转化为对象的C++语言
class CGoods
{
    void Sell()
    {
        --mamount;
    }
    void Buy()
    {
        ++mamount;
    }
    char* mname;
    float mprice;
    int mamount;
};
int main()
{
    CGoods good1;
    good1.Sell();
    CGoods good2;
    good2.Sell();
    return 0;
}

C++的三大特征:封装 、继承 、多态

封装:即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。简而言之,应该给你看的你可以看见,不应该给你看的你看不见。

访问限定符:
public:共有成员函数声明 、任意位置、类中类外
protected:保护成员函数声明 、本类和子类类中访问
private:私有成员函数声明 、仅本类类中访问

this (thiscall):类中普通的成员方法中有默认的参数指针 this、它的值是当前被调用的成员函数所在的对象的起始地址
在调用成员函数时,系统隐式地将对象的起始地址传递给成员函数,使this指针得到当前对象的地址。于是在成员函数中对数据成员的引用,就按照this的指向找到对象的数据成员,实现对数据成员的操作,即把实例化对象地址传给指针this、this指针解引用指向实例化对象内存,访问内存,也就是说,成员函数中数据成员名的前面隐含有“this->” 的指向 
this必须初始化、必须指向对象内存、在函数调用中指向不改变、普通成员方法一定依赖对象调用

class Student中的this:
Student s1;
class Student
{
public:
    void eat()// Student*const this
    {
        //this = &s1;
        std::cout << this->mname << " is eating" << std::endl;
        std::cout << this->mage << std::endl;
    }
    void sleep()
    {
        std::cout << this->mname << " is sleeping" << std::endl;
    }
      void init(char* name)
    {
        mname = new char[strlen(name) + 1]();
        strcpy(mname, name);
    }
private:
    char* mname;
    char* mid;
    int mage;
};

成员方法在类中类外实现:
        1、类中  默认为内联函数(inline)
        2、类外 普通方法 类外实现需加上作用域

C++中结构体和类的区别:
结构体(struct)中默认访问符是共有的(public)
类(class)中默认访问符是私有的(private)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值