假想一下,你是一个顶级汽车设计师,你的任务不是亲自拧紧每一个螺丝,而是要设计出一幅'汽车蓝图',你在图纸上设计了一辆汽车所需的一切:车轮、车灯、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:
void setname(const std::string& Name) { name=Name; }
private:
std::string name;
};
类外定义:在类内声明函数,然后再类外面使用作用域解析运算符::来定义函数体:
class {
:
;
:
std::string name;
};
{
name=Name;
}


