C++—16、C++ 中的类class的基础知识

声明:学习笔记,不喜勿喷。

面向对象编程只是你在写代码时采用的一种编程风格,其它的语言比如JAVA、C#本质上也是面向对象编程的语言,使用这两种语言最好不要使用其它编码风格。而对于c++而言,它不仅支持面向对象编程,也支持面向过程、基于对象和泛型编程。C语言就不支持面向对象编程了。因为面向对象编程的语言要对象和类这样的概念,这个在C语言里是没有的。好在c++增加了这些功能,c++里使用面向对象编程是再好不过了。

类出现的原因

我们本节主要讨论什么是类?简而言之,类是一种将函数和数据组织在一起的方式。举个例子,我们想在一个游戏中,我们可能希望以某种方式代表一个玩家,所以我们怎么做去表示一个玩家呢?当然我们需要有些表示玩家的数据,例如玩家在游戏里的位置,可能还需要其它的属性比如移动的速度,我们还需要3D模型在屏幕上显示玩家,所有的数据都需要存在某个地方,当然我们可以为这些数据创建变量,比如player0x、player0y 、player0speed等等,你会发现代码中会充斥一堆无组织的变量,显然这不是一个好主意,另一个不好的点在于,如果我想编写一个函数来移动角色,我需要将三个整数作为函数的参数,比如int move(int x,int y,int speed),这样会产生很多代码,将难以维护和继续下去,反正就是很乱。

类的创建

我们可以为玩家创建一个类叫player,一次性包含所有想要的数据,最终作为一个类型。

class player
{
    int posx, posy;
    int speed;
};

类名必须是唯一的,因为类基本上就是我们创建的一个新的数据类型。类用花括号括起来,就好像是一个函数,但是请注意:结尾的时候得有一个分号。花括号里面就可以定义位置和速度了,这样我们就创建了一个新的类player,它本质上是一种自定义类型。

实例化

所以当我们开始用这个类的时候,我们可以像创建其它任何变量一样:

player 变量名;

这样我们就可以创建一个player类型的对象(感觉叫变量更贴切一些)。

player player0;

由类这种类型声明的变量叫对象。这里的player0就是对象。新创建对象的过程叫做实例化。所以这里我们就是实例化了一个player0对象。

现在假如我们要设置这些变量,我们可以简单地写

player0.posx=5;

注意这里的“.”叫做成员访问运算符。

访问控制:

当我们这样运行程序的时候

发现出现了错误。这是因为有种东西叫访问控制。

当你创建类时,你可以指定类中属性的可见性,默认情况下,类中成员的访问控制都是私有的。意味着只有类内部的函数才能访问这些变量。

但是很多时候,我们希望在main函数里面访问这些变量。所以在这里我们需要定义为公有的public。公有表示我们可以在类外任何地方去访问这些变量。

类的方法

这样通过将数据组织在一起使代码变得整洁了。优势就是将所有的变量收集起来代表play,我们可以很好地进行管理。我们现在有了所有数据,假设我们想做点事情。比如最简单地移动到什么地方。所以我们要编写一个函数来改变posx和posy的值。我们可以这么写:

我们构建了一个函数,可以移动player,但是我们可以做的更好一点。我们前面说类可以包含函数,这意味着我们可以把函数移动到类内。类内的成员函数称作方法。

这样每个对象都有了自己的move函数,但我们调用时就是调用自己的move函数。这和类外的move函数没有什么不同。但它确实让我们的代码看起来简洁了不少。当你处理大量代码时,这是一个巨大的优势。因为你拥有的代码越多,就会越复杂,越难维护。

总结:

所以本质上来讲,类就是能使我们对变量进行组织,变成一个类型,还为这些变量添加了函数。如果再仔细看看代码,其实类里面我们就定义了3个变量,还有一个move函数来操作这些变量。当然了,函数可以做任何事情,但重点是我们有数据和操作这些数据的函数,这就是类的全部了。你会发现能用类完成的,同样可以不用类完成,类不是万能的,它只是让程序员更轻松,更好的组织和维护代码,仅此而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Growthofnotes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值