内容整理自:The Cherno:C++系列,2024年1月18日
---------------------------------------------------------------------------------------------------------------------------------
简单地说,
比如说游戏,在游戏中,我们怎么去表示一个玩家(player)呢?------我们可能会需要 玩家的位置,玩家的某些属性(性别、攻击值..血条)、玩家的移动速度..可能还要3D模型-----上述所有的数据都需要被储存在计算机的某个地方。
如上,main函数中定义了相关的变量来表示这个player的种种属性,有编程经验的同学应该都可以感觉到,假设开发一个小游戏项目,变量会非常多、非常乱(尤其是有时候搞不清楚这些变量到底是代表什么的时候,会取一些非常长的名字),有2个玩家的时候就已经够乱了,不能想象10个玩家的代码会乱成什么样子(编程时,代码的干净整洁非常重要)。
如上图,就是一堆没有组合在一起的变量。在写完函数之后会显得更加零散、混乱、难以维护。
----创建一个Player类,它包含了关于player的所有属性(data)和功能(method)
//classes are 'types',创建类就是创建一个新的变量类型,如同int一样
格式:
class 类名{
};
点击“运行”,发现报错,错误信息提示我们private变量不可访问。
于是引出了下一个关于类的话题-----“可见性”
默认情况下,一个类中的所有东西都是私有的private,这意味着,只有类内部的函数才能访问这些变量,然而,当我们希望能够从main函数中访问这些变量的时候,只需要把我们即将访问的东西全部设置成public就可以了。
public意味着我们可以在类之外的任何地方访问这些变量,?
看这一下子就不报错了。
------------------------------------------------------------------
现在我们想写一个函数,它能够将我们的player位置移动。?
?
现在让我们尝试一下将函数写在Player类的内部。
functions inside classes are called methods
看看这下代码就干净多了
#include <iostream>
//classes are 'types',创建类就是创建一个新的变量类型,如同int一样
class Player{
public:
int x,y;//玩家的位置
int speed;//玩家的速度
//Player内部的Move方法
void Move(int xa,int ya){
x+=xa;
y+=ya;
}
};
/*现在我们创建了一个全新的类叫做Player,本质上是一种类型
*我们可以在main中把它当做其他变量来创建
*/
using namespace std;
int main(){
Player Luna;
/*这句话的意思类比 int a;
* Luna是一个变量,它的类型是Player
* 由类类型构成的变量被称作“对象”
* 新的对象变量称为“实例”
*/
Luna.x=0;
Luna.y=0;
Luna.speed=2;
Luna.Move(1,-1);
cout<<Luna.x<<","<<Luna.y<<endl;
return 0;
}
当处理很多代码时,这将会是一个巨大的优势,代码越多,你处理的情况就会越复杂,你就越需要把东西“打包”,来保持代码的干净整洁。