741 字
4 分钟
C++入门 (五) : 类
2026-03-12

类的基本概念#

Object Oriented Programming(面向对象编程),只是你在编写代码时采用的一种编程风格,Java、C#等一些其他语言本质上也是OOP的,使用这两种该语言来说最好不要使用其他编码风格(除非你非这样不可),但总的来说这些语言只适合面向对象编程。

而C++不仅仅支持面向对象编程(C++支持面向过程、基于对象、面向对象、泛型编程四种)。 C语言不支持面向对象,因为OOP需要诸如class, object(类和对象)这样的概念

Class 类#

简而言之,类是一种将数据和函数组织在一起的方式。

如果你要做一个游戏,游戏人物有很多属性,包括所在位置,人物状态等等。 如果有多个人物,你将不得不重复定义属性。 你可以用数组来取代这些,但是重点是这还是让一堆无组织的变量充斥在代码中,显然不是一个好主意。 而且如果你要设置一个函数来移动人物角色,我们将需要三个整数来作为函数的参数,如下

void Move(int x, int y, int speed){} //坐标和速度

这样会产生很多代码,而且难以维护.

因此可以用_class_来简化,设置一个Player类,一次性包含所有想要的数据,最终作为一个整体.

class类型制成的变量叫做_object_,新创建对象叫instance(实例),新创建对象的过程叫实例化。

Class的访问#

class Player
{
int x, y;
int speed;
};
int main(){
Player player;
player.x = 5;
std::cin.get();
}

默认情况下,类中的成员的访问控制都是private(私有)的,意味着只有类内部的functions才能访问这些变量。 我们想在main函数中访问这些变量,所以我们要做的是定义为public(公有)的。

class Player
{
public:
int x, y;
int speed;
};
int main(){
Player player;
player.x = 5;
std::cin.get();
}

method(方法)#

class内的函数称作method(方法)

一般定义Move()

class Player
{
public:
int x, y;
int speed;
};
void Move(Player& player, int xa, int ya)
{
player.x += xa * player.speed;
player.y += ya * player.speed;
}
int main()
{
Player player;
Move(player,1,-1)
std::cin.get();
}

Move()转为method

class Player
{
public:
int x, y; // 变量1
int speed; // 变量2
void Move(int xa, int ya) // 变量3 //去除了player参数
{
x += xa * speed;
y += ya * speed;
}
};
int main()
{
Player player;
player.Move( 1, -1); // 去除player参数
std::cin.get();
}

代码更加简洁,可读性更强,更好维护

总结#

本质上class就是能使我们能对变量进行组织,变成一个类型,还为这些变量添加了函数。 我们有了数据和操作这些数据的函数。

用类能做的事不用类也行,这就是C语言存在还挺好用的原因。只是让程序员更舒服的syntax sugar(语法糖)

C++入门 (五) : 类
https://dingfengbo.vercel.app/posts/c入门/05-c类/
作者
Eureka
发布于
2026-03-12
许可协议
CC BY-NC-SA 4.0