纯虚函数与抽象类:面试官问“接口怎么设计”,这样答直接加分 上篇聊了多态与虚函数,今天深入一步——纯虚函数和抽象类。这两个概念在面试里考得特别多,特别是面试官让你设计一个系统的时候。如果你能用抽象类把接口定义清楚,面试官会觉得你有架构思维。讲个面试场景。面试官说:"请你设计一个传感器管理系统,支持激光雷达、相机、IMU等多种传感器,你怎么设计?"不少人上来就写具体的类,激光雷达一个类,相机一个类。面试官追问:"如果以后要加新的传感器类型呢?每个都写一套?"这时候就轮到抽象类出场了。纯虚函数:只有声明没有实现的虚函数先回忆一下虚函数。虚函数用virtual声明,有具体的实现,子类可以重写也可以不重写。纯虚函数呢?只有声明,没有实现,后面跟个= 0:class Sensor { public: virtual void init() = 0; // 纯虚函数 virtual void calibrate() = 0; // 纯虚函数 virtual double getValue() const = 0; // 纯虚函数 };注意那个= 0,它不是让函数返回0,而是告诉编译器"这是纯虚函数"。有纯虚函数的类就叫抽象类。抽象类有个硬性规定:不能创建对象。Sensor s; // 编译错误!抽象类不能实例化为什么不能?因为纯虚函数没有实现,如果允许创建对象,调用纯虚函数的时候就会出错。编译器直接从源头禁止了这种行为。抽象类的作用:定义接口规范抽象类的核心