构造函数
创建一个类类型的对象时,编译器会自动使用一个构造函数来初始化该对象,构造函数是一个特殊的、与类同名的成员函数,用于给每个数据成员设置适当的初始值。
构造函数通常使用一个构造函数初始化列表,来初始化对象的数据成员:
Sales_item(): units_sold(0), revenue(0.0) {}
构造函数初始化列表由成员名和带括号的初始值组成,跟在构造函数的形参表之后,并以冒号开头。
构造函数不能声明为const,创建类类型的const对象时,运行一个普通构造函数来初始化该对象,构造函数的工作是初始化对象,不管对象是否为const,都用一个构造函数来初始化该对象。
用于初始化一个对象的实参类型决定使用哪个构造函数。
构造函数初始化式
Sales_item::Sales_item(const string &book):
isbn(book), nuits_sold(0), revenue(0.0) {}
构造函数可以定义在类的内部或外部,初始化式只在构造函数定义中而不是声明中指定。省略初始化列表并在构造函数的函数体内对数据成员赋值是合法的。构造函数分俩阶段执行:初始化阶段和计算阶段。计算阶段由构造函数函数体中的所有语句组成。
没有默认构造函数的类类型成员,以及const或引用类型成员,不管哪种类型,必须用初始化列表进行初始化。
X(int val): i(val), j(val) {}
初始化式可以是任意表达式:
Sales_item(const std::string &book, int cnt, double price):
isbn(book), units_sold(cnt), revenue(cnt*price) {}
类类型的数据成员的初始化式:<