C++笔记(C++启航)面向对象编程

目录

OOP

 通过一个游戏怪物攻击人物的过程理解面向对象编程

使用结构体引入多态问题 

定义类 

成员函数 

声明两个空类 

inline成员函数 

 this指针

OOP

 通过一个游戏怪物攻击人物的过程理解面向对象编程

使用结构体引入多态问题 

#include <iostream>

struct NPC//三个属性
{
    int hp;
    int mp;
    int damage;

};

struct MONSTER
{
    int hp;
    int mp;
    int damage;
    int price;
};
struct ROLE
{
    int hp;
    int mp;
    int damage;
    int diamond;
};
/*三个结构体【NPC】【ROLE】【MONSTER】
  有三个相同的成员变量,
  如果不访问其不共有的成员变量的话,
  可以更改形参的类型
  ROLE和ROLE的pk修改成NPC和NPC的pk
*/
/*
bool Act(ROLE* acter, ROLE* beacter)
{
    beacter->hp -= acter->damage;
    return beacter->hp > 0;
}
*/
/*将上面的Act代码修改成下面的Act代码,修改形参类型,可以减少代码量*/
bool Act(NPC* acter, NPC* beacter)
{
    beacter->hp -= acter->damage;
    return beacter->hp > 0;
}

int main()
{
    MONSTER atm{ 1000,500,50,6000 };
    ROLE zs{ 1000,1000,50,1000 };
    ROLE ls{ 1000,500,100,6000 };

    Act((NPC*)&zs, (NPC*)&ls);//通过强制类型转换,来适应新的Act函数
    std::cout << ls.hp << std::endl;


}

定义类 

 

 其实struct内也可以写函数,如下:

struct ROLE
{
    int hp;
    int mp;
    int damage;
    int diamond;
    bool Act1(ROLE* acter, ROLE* beacter)
    {
        beacter->hp -= acter->damage;
        return beacter->hp > 0;
    }
};

成员函数 

 查看一个对象的占内存大小

声明两个空类 

inline成员函数 

 this指针

引用和this指针的用处

使用引用,提高效率,减少了复制

#include "Role.h"

void Role::Act(Role& role)
{
    hp = 2;
    role.hp -= damage;
}

void Role::Init()
{
    hpRecover = 3;
}
Role* Role::bigger(Role* role)
{
    return this->lv > role->lv ? this : role;

}
Role& Role::SetLv(int newLv)
{
    lv = newLv;
    return *this;
}
Role& Role::SetHp(int newHp)
{
    hp = newHp;
    return *this;
}
Role& Role::SetDamage(int newDamage)
{
    damage = newDamage;
    return *this;
}
#include <iostream>
#include "Role.h"
int main()
{
    
    Role user;
    Role monster;

    user.SetLv(100).SetDamage(10000).SetHp(1000);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值