上篇聊了static的四种用法,今天进入面向对象的世界。
类与对象,是C++最核心的特性,没有之一。面试的时候,几乎每一轮都会涉及到。
讲个真实的面试场景。
去年面试一个应届生,简历上写着"熟悉面向对象编程"。我问:"什么是类?什么是对象?"
他说:"类是模板,对象是实例。"
我说:"能具体点吗?用你做过的项目举个例子。"
他想了半天,说:"比如学生管理系统里,Student是类,张三李四是对象。"
教科书式的回答,但太教科书了。
我追问:"你在机器人项目里,是怎么设计类的?"
他愣了一下,说:"我没怎么设计过,一般都用现成的。"
讲真,这个回答让我有点失望。面向对象不是背概念,是要能在项目里用起来的。
今天我就用机器人传感器的例子,把类与对象讲透。
先搞清楚:类和对象到底是什么关系
类是什么?类是对一类事物的抽象描述。它定义了这类事物有什么属性(数据)和什么行为(方法)。
对象是什么?对象是类的具体实例。每个对象有自己的数据,但共享同一套方法。
用机器人的传感器来理解最直观。
假设你有一个激光雷达传感器。它有什么属性?测量距离、角度范围、分辨率。它有什么行为?开始扫描、停止扫描、获取数据。
把这些抽象出来,就是一个类:
class LidarSensor { // 属性(成员变量) double max_range_; // 最大测量距离 double angle_range_; // 角度范围 double res