一、 构造函数的重载
函数的重载:功能相似的不同函数取相同的函数名。
原来不同的函数必须取不同的函数,C++中有了函数的重载后,不同的函数可以取相同的函数名。就减少了标识的使用,提高的程序的可读性。
不同的函数取相同的函数名的条件是:
1、函数参数的个数不同;2、函数参数的类型不同。
默认(缺省)的构造函数:
一个类中没有定义构造函数,系统会提供一个默认的不带参数的构造函数;
但是如果类中定义构造函数,系统就不再提供默认的不带参数的构造函数。
由类生成对象时,必须调用与之相匹配的构造函数:
例:
#include "iostream"
using namespace std;
class Circle{
protected:
double r; //圆的半径
public:
Circle(){ //无参构造函数
r=1;
};
Circle(double a) {//带一个参数的构造函数
r=a;
}
double area(){
return 3.14*r*r;
}
};
int main(){//程序 的执行总是从main()开始
Circle c1; //调用Circle的不带的构造函数
Circle c2(2.59);//调用是不Circle类中的带一个参数的构造函数
cout<<"圆的面积为:"<<c1.area()<<=""p=""></c1.area()<
return 0;
}
Circle c1; //要求调用类Circle的不带的构造函数
Circle c2(2.59);//要求调用是不Circle类中的带一个参数的构造函数
如果类中没有与相匹配的构造函数,程序就会出错。
任务:一定义一个长方形类,输出长方形的面积。
要求: 长方形的数据成员长(length)和宽(wide)的值是通过构造函数赋值的。
输出结果:
长方形r1的面积为:36;
长方形r2的面积为:200;
长方形r3的面积为:256;
部分代码如下:
#include "iostream"
using namespace std;
class Rectangle{
protected:
double leng,wide; //圆的半径
public:
//下面补充相应的构造函数,使程序能正常运行
double area(){
return length*wide;
}
};
int main()//程序 的执行总是从main()开始 {
Rectangle r1; //调用Circle的不带的构造函数
Rectangle r2(3);
Rectangle r3(3,4)
cout<<"长方形r1的面积为:"<<r1.area()<<=""p=""></r1.area()<
cout<<"长方形r2的面积为:"<<r2.area()<<=""p=""></r2.area()<
cout<<"长方形r3的面积为:"<<r3.area()<<=""p=""></r3.area()<
return 0;
}