多态与虚函数:面试官问“底层怎么实现的”,这样答直接拿满分

📅 2026/7/14 5:06:30
多态与虚函数:面试官问“底层怎么实现的”,这样答直接拿满分
上篇聊了继承,今天讲继承的"灵魂搭档"——多态。多态是面向对象三大特性里最"高级"的一个。面试的时候,如果候选人能把多态讲清楚,特别是虚函数的底层实现,我基本就认定这个人的C++功底没问题。讲个面试场景。面试官问:"什么是多态?"大部分人说:"同一个接口,不同的行为。"面试官追问:"底层怎么实现的?"很多人就开始含糊了:"虚函数……虚表……具体不太记得了。"今天把多态和虚函数从表层到深层一次讲透。没有多态的世界先看看没有多态会怎样。假设你有激光雷达、相机、IMU三种传感器,每种都有init()操作。你要写一个函数初始化所有传感器,问题来了——三种类型不一样,没法放在同一个容器里用统一的接口调用。这就是多态要解决的问题——让不同类型的对象,通过统一的接口来操作。虚函数:多态的关键实现多态,需要一个基类和虚函数:class Sensor { public: virtual void init() { cout "Initializing base sensor..." endl; } }; class LidarSensor : public Sensor { public: void init() override { cout "Initializing lidar..." endl; } }; class CameraSensor : public Sensor { publ