类的相关知识(一)

目录

OOP(面向对象编程)

区别

面向过程

面向对象

成员函数

类的作用域

类的大小

this指针

OOP(面向对象编程)

本质上是一种编程思想,通过把我们编程中遇到的事物抽象成对象来编程

区别

面向过程

struct hero { 英雄属性}
struct monster (怪物属性)
int act(hero &alex, monster& ghost)
{
    ghost.hp-=alex.act;
    return monster.hp;
}

这里通过act传入两个变量,通过计算,返回参数二的值,这是面向过程的,因为它主要聚焦于计算过程

面向对象

Alex.act(ghost)

 这才是面向对象,意思就是alex攻击ghost,act属于Alex的方法,主要侧重于两个对象

语法 

class 类名称
{
    private:
        私有
    int diamond;
    public:
        共有
    void init()
    {
        diamond=3;
    }
}

知识扩展*;类和结构体一样的,类就是结构体,唯一的区别:默认的访问权限不同,struct默认权限为公有(public),class默认权限为私有(private)

private:仅仅成员函数能够访问使用,其他都不能访问,自己也不能访问,这里将diamond初始化为3,其它地方都不能修改,很好的保护了diamond。

成员函数

类由属性和行为构成,属性就是成员变量,方法就是成员函数

类的作用域

类中的成员的作用域就是在这个类里面,如果想在外面访问类里面 的成员,就要通过类进行实例化,也就是声明一个变量,然后通过变量访问

class Role
{
public:
    int hp;
    void addhp(Role& r);
    void bigger(Role* r);
};
Role hero;    实例化一个变量
hero.hp=4;
class C
{

};
void Role::addhp(Role& r)
{
    r.hp+=100
}

通过上面的知识,也可以把类的方法像上面这么写,加上作用域,在类中声明即可,为什么要声明呢?因为定义一个类,就像给了编译器一张图纸,要让编译器知道有这个函数。

类的大小

类的方法不占类的内存空间,它编译时放在了其他的内存地方。用sizeof求一下Role的大小

发现是4字节

空类的大小

上面的空类C大小为1字节,因为假设我们声明一个两个C的类变量,C1和C2,如果不给他们内存空间,就不能区分它们,所以编译器给它一个1字节的空间

this指针

Role* Role::bigger(Role* r)
{
    return r->hp > ho ? r:this;
}
Role Hero;
Hero.hp=100;
Role Monster;
Hero.ho=200;
Hero.bigger(&Monster)

谁的方法就指向谁,就是谁的this指针

你可能感兴趣的:(C++高中之面向对象编程相关,c++)