想象一下,你是一位顶级汽车设计师。你的任务不是亲自拧紧每一个螺丝,而是设计出一幅'汽车蓝图'。你在图纸上规划了车轮、车灯、V8 发动机等所需的一切。这份设计好的蓝图就相当于 C++ 中的'类',它规定了汽车的属性(例如离合器)和方法(功能:换挡)。类本身并不是一辆真正的汽车,只是设计规划;后续工厂按照蓝图生产出的汽车,就是实例化。每一辆从流水线上下来的车辆,都是这个蓝图的一个对象,它们都拥有蓝图定义的属性和功能。
1. 类的定义
1.1 基本概念
类的基本思想是数据抽象和封装。数据抽象依赖于接口和实现的分离:类的接口包括用户所能执行的操作,而实现则包含数据成员、负责接口的函数以及私有辅助函数。封装实现了接口与实现的分离,隐藏了内部细节,用户只能使用指定接口而无法直接访问实现部分。
要实现这一点,首先需要定义一个抽象数据类型。设计者负责考虑实现过程,使用者只需关注类型做了什么,无需了解工作细节。
在 C++ 中,通过关键字 class 来定义一个类。通常包括类名、访问限定符、成员变量和成员函数。注意,定义类结束时 {} 外面的分号不能省略,这与定义函数不同。
class ClassName {
public: // 公有成员变量,可被直接访问
ClassName(); // 构造函数
~ClassName(); // 析构函数
void test(); // 成员函数
private: // 私有成员变量,仅成员函数和友元可访问
int a;
protected: // 受保护成员,派生类可访问
int b;
};
类主体中的内容称为类成员。变量是成员变量,函数是成员函数。
1.2 成员函数的定义
成员函数可以在类内或类外定义。
类内定义:直接在函数体内编写,编译器通常会隐式将其当作内联函数处理。
class Date {
public:
void setname(const std::string& Name) { name = Name; }
private:
std::string name;
};
类外定义:在类内声明,然后在外面使用作用域解析运算符 :: 定义函数体。
class Date {
public:
;
:
std::string name;
};
{
name = Name;
}


