3.1构造函数-三、构造函数的创建 (5)使用默认参数的构造函数 ●好处: ◆提供建立对象时的多种选择,相当于多个重载的构 造函数。 ◆即使在调用构造时不提供参数也不会出错,因为有 默认参数值参与对象初始化。 ◆当每一个对象都是相同的初始值时,非常方便,用 户不需要输入数据。 ●20
⚫好处: ◆ 提供建立对象时的多种选择,相当于多个重载的构 造函数。 ◆ 即使在调用构造时不提供参数也不会出错,因为有 默认参数值参与对象初始化。 ◆ 当每一个对象都是相同的初始值时,非常方便,用 户不需要输入数据。 3.1 构造函数-三、构造函数的创建 (5)使用默认参数的构造函数 ⚫20
注意: ◆何处指定默认参数值?构造函数的声明处还是定义处?应该 在构造函数的声明处指定默认参数值。因为类的声明在头文件 中,用户是看得见的,而放在函数的定义处,用户不一定看得 见。 ◆一个类若定义了全部是默认参数的构造函数后,不能再定义 重载的构造函数。否则会产生多义性,系统不知道调用哪一个。 例如一个类有右边形式的三个重载构造函数,若定义了如下对 象: Time(int h=10,int m=10,int s=10) Time t1; Time () 它调用哪一个构造函数呢?系统不能确定,从而引起混乱。 21
注意: ◆ 何处指定默认参数值?构造函数的声明处还是定义处?应该 在构造函数的声明处指定默认参数值。因为类的声明在头文件 中,用户是看得见的,而放在函数的定义处,用户不一定看得 见。 ◆ 一个类若定义了全部是默认参数的构造函数后,不能再定义 重载的构造函数。否则会产生多义性,系统不知道调用哪一个。 例如一个类有右边形式的三个重载构造函数,若定义了如下对 象: Time t1; 它调用哪一个构造函数呢?系统不能确定,从而引起混乱。 Time(int h=10,int m=10,int s=10); Time ( ); ⚫21
思考 如果在一个类里面创建了构造函数,还 需要为其数据成员赋值的函数(如set0)吗 ?为什么? ●22
思考 如果在一个类里面创建了构造函数,还 需要为其数据成员赋值的函数(如 set()) 吗 ? 为什么? ⚫22
课后作业 Rectangle类具有两个数据成员width和lengt h以及一个成员函数DisplayRectangle(): 5.1、为Rectangle类创建无参数的、带参数的 构造函数 5.2为Rectangle类创建具有默认参数的构造函 数。 ●23
课后作业 Rectangle类具有两个数据成员width和lengt h 以及一个成员函数DisplayRectangle(); 5.1、为Rectangle类创建无参数的、带参数的 构造函数 5.2 为Rectangle类创建具有默认参数的构造函 数。 ⚫23
综合编程实例-构造三角形应用程序 。5.3编写一个构造三角形的应用程序,让用户 输入三角形三边的长度,然后程序确定这个 三角形是直角三角形还是等边三角形。需要 定义一个代表三角形的类和主函数。 ●24
综合编程实例-构造三角形应用程序 ⚫5.3 编写一个构造三角形的应用程序,让用户 输入三角形三边的长度,然后程序确定这个 三角形是直角三角形还是等边三角形。需要 定义一个代表三角形的类和主函数。 ⚫24