设计一个三角形类Triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符“+",以实现求两个三角形对象的面积之和,进一步实现3个或更多的三角形对象相加的面积之和。
分析提示:在Triangle类中设计一个友元函数double operator+(Triangle t1,Triangle t2),它重载运算符“+",返回t1和t2两个三角形的面积之和。
#include<iostream>
#include<cmath>
using namespace std;
class Triangle
{
public:
Triangle()
{
a=0;
b=0;
c=0;
};
Triangle(double a,double b,double c)
{
this->a=a;
this->b=b;
this->c=c;
}
double area()
{
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
return s;
}
friend double operator+(Triangle t1,Triangle t2);
friend double operator+(double t,Triangle t1);
private:
double a,b,c;
double s,p;//s表示面积,p代表三条边之和的1/2
};
double operator+(Triangle t1,Triangle t2)
{
return t1.area()+t2.area();
}
double operator+(double t,Triangle t1)
{
return t+t1.area();
}
int main()
{
Triangle tri1(3,4,5),tri2(6,8,10);
double area1=tri1+tri2;//或者double area1=tri1.area()+tri2.area();
cout<<area1<<endl;
Triangle tri3(9,12,15);
double area2=tri1+tri2+tri3;//double area2=tri1.area()+tri2.area()+tri3.area();
cout<<area2<<endl;
return 0;
}
“你似春风百花闻,一掠山河万木生。”