1 实验内容及目的
1.1实验目的
理解和掌握C++运算符重载。
1.2实验内容
根据理论课中的Circle类
Circle |
-radius:double |
+Circle() + Circle(radius:double) +getRadius():double +setRadius(radius:double):void +getArea():double |
在程序清单给出的Circle类中实现关系运算符(<、<=、==、!=、>、>=),实现按半径对Circle对象排序。
2 实验步骤
在程序设计过程中,我们创建了一个Circle类来表示一个圆,包含如下属性:
(1)一个名为radius的数据域,表示圆的半径。
(2)一个无参构造函数,创建一个单位圆。
(3)一个带参数的构造函数,按指定半径构造一个圆。
(4)radius的获取器函数。
(5)getArea函数,返回圆的面积。
(6)覆盖关系运算符运算,实现Circle的大小比较。
输入圆的个数,然后输入每个圆的半径,输出按照圆的大小的排序。
3 源代码
3.1 Circle.h
#include<iostream>
using namespace std;
class Circle
{
doubleradius;
public:
Circle();
Circle(doublex);
doublegetRadius();
voidsetRadius(double x);
doublegetArea();
booloperator <(Circle a);
booloperator <=(Circle a);
booloperator ==(Circle a);
booloperator !=(Circle a);
booloperator >(Circle a);
booloperator >=(Circle a);
};
3.2 Circle.cpp
#include<iostream>
#include"Circle.h"
using namespace std;
Circle::Circle()
{
radius=1;
}
Circle::Circle(double x)
{
radius=x;
}
double Circle::getRadius()
{
returnradius;
}
void Circle::setRadius(double x)
{
radius=x;
}
double Circle::getArea()
{
returnradius*radius*3.14;
}
bool Circle::operator <(Circle a)
{
if(radius<a.getRadius())return true;
elsereturn false;
}
bool Circle::operator <=(Circle a)
{
if(radius<=a.getRadius())return true;
elsereturn false;
}
bool Circle::operator ==(Circle a)
{
if(radius==a.getRadius())return true;
elsereturn false;
}
bool Circle::operator !=(Circle a)
{
if(radius!=a.getRadius())return true;
elsereturn false;
}
bool Circle::operator >(Circle a)
{
if(radius>a.getRadius())return true;
elsereturn false;
}
bool Circle::operator >=(Circle a)
{
if(radius>=a.getRadius())return true;
elsereturn false;
}
3.3 Main.cpp
#include<iostream>
#include"Circle.h"
using namespace std;
int main()
{
Circlea[10];
intb;
Circled;
doublec;
cout<<"请输入圆的个数:";
cin>>b;
for(inti=0;i<b;i++)
{
cout<<"请输入圆"<<i+1<<"的半径:";
cin>>c;
a[i]=Circle(c);
}
for(intj=0;j<b-1;j++)
for(i=0;i<b-1-j;i++)
{
if(a[i]>a[i+1])
{
d=a[i+1];a[i+1]=a[i];a[i]=d;
}
}
cout<<"按照升序输出圆的大小如下:"<<endl;
for(i=0;i<b;i++)
cout<<a[i].getRadius()<<"";
cout<<endl;
return0;
}
4 遇到的问题与分析
运算符的重载问题,最终通过翻阅书籍以及上网查资料解决了问题。
5 实验体会
通过这个实验,我学会了如何使用运算符重载。