构造函数的重载与复制构造函数(DOC)

一、 构造函数的重载

函数的重载:功能相似的不同函数取相同的函数名。

原来不同的函数必须取不同的函数,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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值