0. 抽象数据类型
类(class) 和结构体(struct) 都是C++中的自定义数据类型,是使用C++实现面向对象编程思想的起点。
类的基本思想是数据抽象(data abstraction) 和封装(encapsulation)。
数据抽象是一种依赖于接口(interface) 和实现(implementation) 分离的编程技术。类的接口包括用户所能执行的操作;类的实现则包括类的数据成员、负责接口实现的函数体以及类定义所需的各种私有函数。
封装实现了类的接口和实现的分离。封装后的类隐藏了它的实现细节,类的用户只能使用接口,无法看到实现。
因此也将类和结构体统称为抽象数据类型。
因为类和结构体的区别,仅仅是默认访问权限的区别,所以以后只使用类来描述相关内容。
关于类,我们需要了解:
- 类的声明&定义
- 成员数据
- 成员函数
- 访问控制(类与结构体的区别)
- 类的初始化——构造函数
- 类的拷贝、赋值
- 类的移动
- 类的销毁——析构函数
- 类的其他特性
- 运算符重载
1. 类的声明&定义
声明一个类,相当于声明一种新的类型。
class MyClass;
上述代码告诉编译器我有一个自定义数据类型,类型名是MyClass
。
定义一个类,我们要定义类的成员。类的成员包括三类:
- 类型成员
- 数据成员,或成员数据
- 成员函数
通常将类的定义写在.h文件中:
// MyClass.h#ifndef MY_CLASS_H
#define MY_CLASS_Hclass MyClass {
public:using Pos = unsigned int;
private:// 数据成员int i;char c;
public:// 类的成员函数void print();
};#endif // MY_CLASS_H