类(Classes)是面向对象编程的基础,它是一种将数据和行为(函数)封装在一起的抽象数据类型。在C++中,类(class)的定义使用关键字`class`,它的作用类似于C语言中的结构体(struct),但类可以包含函数,而struct通常只能包含数据。
类的定义格式如下:
```cpp
class 类名 {
访问修饰符1: 成员1;
访问修饰符2: 成员2;
...
};
对象名;
```
其中,`类名`是你自定义的类型名称,`对象名`是类的实例,也称为对象。类的主体包含成员,可以是数据成员(变量)或成员函数(方法)。访问修饰符有三种:`private`、`public`和`protected`,它们控制成员的可见性和访问权限。
- `private`:私有成员,只能在类的内部或指定的友元类(friend class)中访问。
- `protected`:受保护成员,除了在类的内部,还可以在友元类和派生类中访问。
- `public`:公有成员,对所有能看见该类的地方都是可见的,可以自由访问。
如果没有明确指定访问修饰符,成员默认为`private`。例如:
```cpp
class CRectangle {
int x, y; // 默认为private
public:
void set_values (int a, int b);
int area (void);
};
CRectangle rect; // 创建一个CRectangle类型的对象
```
在这个`CRectangle`类中,`x`和`y`是私有成员,不能在类外部直接访问。`set_values`和`area`是公有成员,可以在类的外部调用,如`rect.set_values(3,4)`和`rect.area()`。
在类的外部定义类的成员函数时,需要使用范围解析运算符`::`,例如:
```cpp
void CRectangle::set_values (int a, int b) {
x = a;
y = b;
}
```
在上述代码中,`CRectangle::set_values`表示`set_values`是`CRectangle`类的成员函数。
在主函数`main`中,我们可以创建`CRectangle`类的对象`rect`,并调用其公有成员函数来设置值和计算面积。在示例程序运行后,会输出`area: 12`,因为`rect`的宽和高分别为3和4,面积为12。
总结来说,类(Classes)是面向对象编程的核心概念,它提供了数据封装和抽象的能力,通过访问修饰符控制成员的访问权限,确保了代码的封装性和安全性。类的实例(对象)可以拥有自己的状态(数据成员)和行为(成员函数),使得代码更易于设计、理解和维护。