实验内容及目的
实验目的:理解和掌握C++运算符重载。
实验内容:根据理论课中的Circle类
Circle |
-radius:double |
+Circle() +Circle(radius:double) +getRadius():double +setRadius(radius:double):void +getArea():double |
在程序清单给出的Circle类中实现关系运算符(<,<=,==,!=,>,>=),实现按半径对Circle对象排序。
2 实验步骤
(1) 创建main.cpp文件,写入基本方法,属性,构造方法的声明,实现声明的方法和实验内容的要求;
(2) 编写测试文件testcircle来测试方法;
3 源代码
#include <iostream>
using namespace std;
class Circle
{
public:
Circle();
double getRadius();
void setRadius(double);
bool operator<(Circle c);
private:
double radius;
};
Circle::Circle()
{
radius=0;
}
double Circle::getRadius()
{
return radius;
}
void Circle::setRadius(double r)
{
radius=r;
}
bool Circle::operator<(Circle c)
{
if(radius<c.getRadius())
{
return true;
}
else
{
return false;
}
};
int main()
{
Circle circle1;
Circle circle2;
Circle circle3;
Circle circle4;
Circle circle5;
circle1.setRadius(5);
circle2.setRadius(15);
circle3.setRadius(2);
circle4.setRadius(13);
circle5.setRadius(3);
Circle circleArray[5]={circle1,circle2,circle3,circle4,circle5};
for(int i=0;i<5-1;i++){
Circle min;
min=circleArray[i];
for(int j=i+1;j<5;j++){
if(circleArray[j]<min){
circleArray[i]=circleArray[j];
circleArray[j]=min;
min=circleArray[i];
}
}
}
for(int k=0;k<5;k++){
cout<<circleArray[k].getRadius()<<endl;
}
return 0;
}
4 遇到的问题与分析
开始的时候还不是很明白题目的意思,在我再一次浏览题目的时候发现了重载才知道要我们运用重载来解这道题。题目不难,但是需要我们认真学习重载的方法和原理。而这次实验重点也正是在于重载运算符的方法怎样写和理解实际比较中真正用到的值的关系,只要理解了他们的关系就能很容易做出这道题目。
5 实验体会
通过这次的实验,我更加深入了解了重载的方法和原理,对重载的应用也有了更加深入的接触。这次的题目比较基础,但是却是我对重载的方法的一次实打实的接触,有了这一次的实验,我相信我对重载方面的记忆与应用会有进一步的提升。