假想一下,你是一个顶级汽车设计师,你的任务不是亲自拧紧每一个螺丝,而是要设计出一幅'汽车蓝图'。你在图纸上设计了一辆汽车所需的一切:车轮、车灯、V8 发动机、方向盘等。你手上这份设计好的蓝图就相当于 C++ 中的'类',它规定了汽车的属性(例如:离合器)和方法(功能:换挡)。它本身并不是一辆真正的汽车,只是你的一份设计规划。后续你交付给工厂,工厂按照你的设计蓝图生产出了一辆汽车,这就是实例化。后续工厂根据你的蓝图设计了一条流水线,每一辆从流水线上生产下来的车辆,都是这个蓝图(类)的一个对象,它们都有蓝图定义的属性和功能。在 C++ 中,类就充当着蓝图的作用,它定义了对象拥有哪些属性。
1. 类
1.1. 类的定义
类的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现的分离式编程技术,类的接口包括用户所能执行的操作,类的实现则是包括类的数据成员、负责接口实现的函数以及定义类所需的各种私有函数。封装实现了类的接口和实现的分离,封装后的类隐藏了它的实现细节,也就是说,用户只能使用指定的接口而无法访问实现部分。
类想要实现数据抽象和封装,首先需要定义一个抽象数据类型。在抽象的数据类型中,由类的设计者负责考虑类的实现过程,使用该类型的程序员则只需要考虑类型做了什么,而无需了解类型的工作细节。
C++ 中通过关键字 class 来定义一个类,类的定义通常包括类名、访问限定符、成员变量和成员函数,类的定义格式如下:
class classname {
public: // 公有成员变量,可以被直接访问
classname(); // 类的构造函数后面会讲解
~classname(); // 类的析构函数
void test(); // 成员函数
private: // 私有成员变量,只能被类的成员函数和友元函数访问
int a; // 私有成员变量
protected: // 受保护的成员,可以被类的派生类所访问
int b; // 受保护的成员变量
};
这里面有好多我们没有接触过的概念,放心先不急,一点一点来,都会讲到的。其中,class 定义一个类,classname 为定义的类名,{} 所包含的为类的主体。特别注意:定义类结束时 {} 外面的分号不能像定义函数一样被省略。类主体中的内容被称为类成员,类中的变量被称为成员变量,类中的函数被称为成员函数。
成员函数的定义分为类内定义和类外定义。
类内定义:在函数体内直接定义,一般地这一类函数会被编译器隐式地当作内联函数处理:
class classname {
public:
{ name = Name; }
:
std::string name;
};







