构造函数
每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数便是构造函数。它的任务就是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。
默认初始化构造函数
在我们没有定义构造函数时,类会通过一个特殊的构造函数来控制默认初始化过程,这个过程叫做默认构造函数,它无需任何实参。又被称为合成的默认初始化构造函数
它会按照如下规则初始化类的数据成员
1.如果存在类内初始值,用它来初始化成员
2.否则,默认初始化该成员
注意:只有当类内没有任何构造函数时,编译器才会自动生成默认构造函数
定义构造函数
在类内定义构造函数
新增这样几个构造函数
Sales_data() = default; //默认构造函数,如果我们需要默认的行为,那么可以通过在参数列表后写上 = default
Sales_data(const std::string &s) : bookNo(s) = {}
Sales_data(const std::string &s, unsigned n, double p) : bookNo(s), units_sold(n), revenve(p*n) {}
//构造函数的初始值列表,上述 :后面跟的是初始值列表,{}内是函数体
Sales_data(std::istream &)
//这个是在类外定义构造函数