定义:类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫做构造函数。
作用:构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。
Tips:构造函数不能被声明称const。
构造函数几种形式:
- 默认构造函数(=default):如果类没有显示地定义构造函数,那么编译器就会为类隐式地定义一个默认构造函数。
Solution() = default;
- 构造函数初始值列表:负责为新创建的对象的一个或几个数据成员赋初值。
//初始化
Sales_data(const string &s, unsigned n, double p) : bookNo(s), units_sold(n), revenue(p*n) {}
- 在类的外部定义构造函数:
//赋值
Sales_data::Sales_data(const string &s, unsigned n, double p)
{
bookNo = s;
units_sold = n;
revenue = n * p;
}
初始化与赋值:
前者是直接初始化数据成员,后者则是先初始化再赋值。
如果成员是const或者是引用的话,必须将其初始化。或者,当成员属于某种类类型且该类没有定义默认构造函数时,也必须将这个成员初始化。
随着构造函数体一开始执行,初始化就完成了。因此,初始化const或者引用类型的数据成员的唯一机会就是通过构造函数初始值。
- 委托构造函数:使用所属类的其他构造函数执行委托构造函数的初始化过程,或者说他把自己的一些或全部职责委托给了其他构造函数。









网友评论