构造函数与析构函数:面试官问“对象创建时发生了什么”,很多人答不上来
上篇聊了类与对象的基本概念,今天深入一步——对象的生命周期。构造函数和析构函数,是C++里最容易被低估的两个概念。说它容易,是因为语法简单;说它容易被低估,是因为很多人用了很久,对底层的调用时机和顺序还是模模糊糊。面试的时候,我特别喜欢问构造和析构相关的问题。不是考语法,而是考你对对象生命周期的理解。构造函数:对象出生时做什么构造函数的任务是在对象创建的时候,把成员变量初始化到合法的状态。class Sensor { double value_; bool is_active_; string name_; public: Sensor() : value_(0.0), is_active_(false), name_("unknown") { cout "Sensor created" endl; } }; Sensor s; // 构造函数被调用构造函数有几个要点:第一,构造函数名和类名相同,没有返回类型。第二,构造函数可以重载。不同的参数列表,对应不同的初始化方式。class Sensor { double value_; string name_; public: Sensor() : value_(0.0), name_("unknown") {} // 默认构造 Sensor(double v) : value_(v), name_("sensor") {} // 一个参数 Sen