每个类都会为它的对象定义初始化的方式,用一个或几个特殊的函数去控制对象的初始化,我们把这些特殊的函数叫做 构造函数。
那么,问题来了,构造函数作用是什么?
答:为了初始化对象的数据成员。就是简单。别把构造函数想着多复杂。
那么,问题又来了,构造函数和普通的成员函数有什么相似和区别呢?
答: 构造函数与函数名与类名同名,没有返回值类型,有一个参数列表(0个或多个形参),有一个函数体(可以为空)。
刚说到,可以定义一个或几个构造函数,那么不同的构造函数互为重载函数,(即 各个构造函数间形参个数或形参类型不同)
好,说到这,什么是构造函数,以及为什么要定义构造函数已经说得很清楚了。
补充一点, 构造函数不能定位为const, 因为类的const对象,直到构造函数完成后,才真正获得其 const属性,所以,在构造函数中可以对 const对象的成员变量写值。
接下来用几个例子说明构造函数,以及其初始化的过程。
// a.h
#include <string>
#include <istream>
class A
{
public:
A() = default;
A(std::string book) : bookNo(book) {}
A(std::string book,