执行其中一个。
3.1.6使用默认参数值的构造函数
C++允许在构造函数里为形参指定默认值,如果创建对象时,未给出相应的实参时,系统将用形参的默认值为形参赋值。 格式:
函数名(类型 形参1=常数,类型 形参2=常数,…);
例3.4:将例3.3中的构造函数改用带默认值的参数,长、宽、高的默认值都是10。 #include
Box(int w=10,int h=10,int len=10); int volume(); private: int height; int width; int length; };
Box::Box(int w,int h,int len) {
height=h;
width=w; length=len; }
int Box::volume() {
return(height*width*length); } int main() {
Box box1;
cout<<\体积= \.volume()< cout<<\体积 \.volume()< cout<<\体积 \.volume()< cout<<\体积\.volume()< 程序运行结果为: box1 体积=1000 box2 体积=1500 box3 体积=4500 box4 体积=9000 构造函数也可以改写成带参数初始化表的形式: Box::Box( int h, int w, int len): height ( h),width(w), length( len ){ } 整个函数只需一行,简单方便。 在构造函数中使用默认参数提供了建立对象的多种选择,它的作用相当于多个重载构造函数。 说明: (1)如果在类外定义构造函数,应该在声明构造函数时指定默认参数值,在定义函数时可以不再指定默认参数值。 (2)在声明构造函数时,形参名可以省略例如: Box(int =10,int =10,int =10); (3)如果构造函数的所有形参都指定了默认值,在定义对象时,可以指定实参也可不指定实参。由于不指定实参也可以调用构造函数,因此全部形参都指定了默认值的构造函数也属于默认构造函数。为了避免歧义,不允许同时定义不带形参的构造函数和全部形参都指定默认值的构造函数。 (4)同样为了避免歧义性,如定义了全部形参带默认值的构造函数后,不能再定义重载构造函数。反之亦然。 Box(int =10,int =10,int =10); Box(); Box(int, int );

