这是一个三角类Triangle,重载运算符“+”来实现两个三角形对象的面积之和
如何改进成计算任意多个三角形的面积之和?
我这样重载“+”符合实现对两个三角形对象的面积之和吗?
#include <iostream>
#include <math.h>
using namespace std;
class Triangle
{
private:
int x,y,z;
public:
Triangle(){}
void area()
{
float s,area;
s=(x+y+z)/2;
area=sqrt(s*(s-x)*(s-y)*(s-z));
cout<<"area is "<<area<<endl;
}
friend Triangle operator+(Triangle b1,Triangle b2)
{
Triangle b;
b.x=b1.x+b2.x;
b.y=b1.y+b2.y;
b.z=b1.z+b2.z;
return b;
}
void input()
{
cin>>x>>y>>z;
}
void output()
{
cout<<"triangle three horizon length is "<<x<<" "<<y<<" "<<z<<endl;
}
};
int main()
{
Triangle a,b;
a.input();
b.input();
(a+b).output();
(a+b).area();
return 0;
}
一般不会(a + b).area(); 这样调用,用起来不自然。
而是会实现类似下面的一个重载函数
这样,打印的时候只要 cout << a + b << endl;即可
代码稍微改了下,具体的算法没看,
PS:
我更新了下,这里其实没必要用友元函数,直接如下用就行
Triangle operator+(Triangle other)
{
}
你用friend来处理的话,返回值也是一个Triangle,可以递归的再去加另外一个Triangle,就实现多个Triangle连加的形式