例9.2有两个长方柱,其长、宽、高分别为:12,20,25; 10,14,20。求体积。编程序,在类中用带参数的构造函数 #include <iostream> Box:Box(int h,int w,int len) using namespace std; height=h, class Box width-w; 声明带参 在类外定义 public: 数的构造 length=len; 带参数的构 Box(int,int,int); 函数 造函数 int volume()方 private: int Box:volume() int height; int width; int length; return(height*width*length); 定义计算体积的函数
#include <iostream> using namespace std; class Box {public: Box(int,int,int); int volume( ); private: int height; int width; int length; }; 例9.2 有两个长方柱,其长、宽、高分别为: 12,20,25; 10,14,20。求体积。编程序,在类中用带参数的构造函数 Box∷Box(int h,int w,int len) {height=h; width=w; length=len; } 在类外定义 带参数的构 造函数 int Box∷volume( ) { return(height*width*length); } // 定义计算体积的函数 声明带参 数的构造 函数
int main( 建立对象boxl,并指定 {Boxbox1(12,25,30月 box1长、宽、高的值 cout<<"The volume of boxl is "<<box1.volume()<<endl; Box box2(15,30,21)5 建立对象box2,并指定 cout<<"The volume of box2 is box2长、宽、高的值 "<<box2.volume()<<endl: return 0; 可以知道: (1)带参数的构造函数中的形 程序运行结果如下: 参,其对应的实参在定义对象时 The volume of box1 is 9000 给定。 The volume of box2 is 9450 (2)用这种方法可以方便地实 现对不同的对象进行不同的初始 化
int main( ) {Box box1(12,25,30); cout<<″The volume of box1 is ″<<box1.volume( )<<endl; Box box2(15,30,21); cout<<″The volume of box2 is ″<<box2.volume( )<<endl; return 0; } 程序运行结果如下: The volume of box1 is 9000 The volume of box2 is 9450 建立对象box1,并指定 box1长、宽、高的值 建立对象box2,并指定 box2长、宽、高的值 可以知道: (1) 带参数的构造函数中的形 参,其对应的实参在定义对象时 给定。 (2) 用这种方法可以方便地实 现对不同的对象进行不同的初始 化
9.1.4用参数初始化表对数据成员初始化 此方法不在函数体内对数据成员初始化,而是在 函数首部实现 例如例9.2中定义构造函数可以改用以下形式: Box:Box(int h,int w,int len):height(h), width(w),length(len) 这种写法方便、简练,尤其当需要初始 化的数据成员较多时更显其优越性。甚 至可以直接在类体中(而不是在类外)定 义构造函数
9.1.4 用参数初始化表对数据成员初始化 Box∷Box(int h,int w,int len):height(h), width(w),length(len) { } 此方法不在函数体内对数据成员初始化,而是在 函数首部实现 例如例9.2中定义构造函数可以改用以下形式: 这种写法方便、简练,尤其当需要初始 化的数据成员较多时更显其优越性。甚 至可以直接在类体中(而不是在类外)定 义构造函数
9.1.5构造函数的重载 以便对类对象提供 不同的初始化的方 法,供用户选用 在一个类中可以定义多个构造函数 这些构造函数具有相同的名字,而 参数的个数或参数的类型不相同, 这称为构造函数的重载
9.1.5 构造函数的重载 在一个类中可以定义多个构造函数 以便对类对象提供 不同的初始化的方 法,供用户选用 这些构造函数具有相同的名字,而 参数的个数或参数的类型不相同, 这称为构造函数的重载
例9.3在例9.2的基础上,定义两个构造函数,其中 一个无参数,一个有参数。 #include <iostream> using namespace std; class Box public: 声明一个无参的构造函数 Box(); Box(int h,int w.int len):height(h),width(w),length(len){} int volume()方 private: 声明一个有 Box:Box() int height; 参的构造函 (height=10; int width; 数,用参数 width=10; int length; 的初始化表 length=10; 对数据成员 初始化
例9.3 在例9.2的基础上,定义两个构造函数,其中 一个无参数,一个有参数。 #include <iostream> using namespace std; class Box {public: Box( ); Box(int h,int w,int len):height(h),width(w),length(len){ } int volume( ); private: int height; int width; int length; }; Box∷Box( ) {height=10; width=10; length=10; } 声明一个无参的构造函数 声明一个有 参的构造函 数,用参数 的初始化表 对数据成员 初始化