1 实验内容及目的
2 实验步骤
在头文件中声明Circle类,其中包括运算符相关的函数,在CPP文件中实现Circle类中的函数,通过关键词operater实现了运算符重载,最后用Test类中的方法测试。
3 源代码
Circle.cpp:
#include"Circle.h"
Circle::Circle(){
radius= 1;
}
Circle::Circle(double r){
radius= r;
}
double Circle::getRadius(){
returnradius;
}
void Circle::setRadius(double r){
radius = r;
}
double Circle::getArea(){
returnradius * radius * 3.14;
}
bool Circle::operator <(CirclesecondCircle){
if(radius < secondCircle.radius)
returntrue;
else
returnfalse;
}
bool Circle::operator <=(CirclesecondCircle){
if(radius <= secondCircle.radius)
returntrue;
else
returnfalse;
}
bool Circle::operator ==(Circle secondCircle){
if(radius == secondCircle.radius)
returntrue;
else
returnfalse;
}
bool Circle::operator !=(Circle secondCircle){
if(radius != secondCircle.radius)
returntrue;
else
returnfalse;
}
bool Circle::operator >(CirclesecondCircle){
if(radius > secondCircle.radius)
returntrue;
else
returnfalse;
}
bool Circle::operator >=(CirclesecondCircle){
if(radius >= secondCircle.radius)
returntrue;
else
returnfalse;
}
Circle.h:
classCircle
{
public:
Circle();
Circle(doubler);
doublegetRadius();
voidsetRadius(double r);
doublegetArea();
booloperator <(Circle secondCircle);
booloperator <=(Circle secondCircle);
booloperator ==(Circle secondCircle);
booloperator !=(Circle secondCircle);
booloperator >(Circle secondCircle);
booloperator >=(Circle secondCircle);
private:
doubleradius;
};
Test.cpp:
#include "Circle.h"
#include <iostream>
using namespace std;
void sort(Circle a[], int n){//对圆进行排序
boolexchange;
for(int i = 0; i < n-1; i++){
exchange= false;
for(int j = n - 1; j > i; j--){
if(a[j] < a[j - 1]){
Circletemp = a[j - 1];
a[j- 1] = a[j];
a[j]= temp;
exchange= true;
}
}
if(!exchange)
return;
}
}
int main(){
Circlecircle1;
Circlecircle2(2), circle3(3), circle4(4), circle5(5);
CirclecircleArray[] = { circle5, circle3, circle4, circle2, circle1 };
cout<< "排序前:" << endl;
for(int i = 0; i < 5; i++){
cout<< circleArray[i].getRadius() << endl;
}
sort(circleArray,5);
cout<< "排序后:" << endl;
for(int i = 0; i < 5; i++){
cout<< circleArray[i].getRadius() << endl;
}
}
4 遇到的问题与分析
这次的实验较为顺利,主要遇到的问题还是一些细节上存在的漏洞,经过认真调试后程序能够成功运行。
5 实验体会
经过本次实验我学会了如何在C++中实现运算符重载,从而能够更加灵活地编写C++代码来实现程序功能。除此之外,我也体会到重载的重要性。通过运算符重载,我能够使得自己所编写的代码更加易于他人理解。