声明一个圆,属性为圆心坐标和半径,定义两个友元普通函数分别计算两个圆的圆心间的距离和两个圆的面积之差。
友元类:友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。
#include<iostream>
#include <math.h>
using namespace std;
class Circle{
private:
double x;
double y;
double r;
public:
Circle(double x,double y,double r){
this->x=x;this->y=y;this->r=r;};
friend double circleDistance(Circle circle01,Circle circle02);
friend double areaDistance(Circle circle01,Circle circle02);
};
//圆心距离
double circleDistance(Circle circle01,Circle circle02){
double dis = sqrt(pow(fabs(circle01.x- circle02.x), 2) + pow(fabs((circle01.y - circle02.y)), 2));
return dis;
}
//面积之差
double areaDistance(Circle circle01,Circle circle02){
double a = fabs(3.14*pow(circle01.r, 2)-3.14*pow(circle02.r, 2));
return a;
}
int main(){
Circle circle01(1.5,2.5,1);
Circle circle02(3,2.5,2);
cout<<"圆心距离:"<<endl;
cout<<circleDistance(circle01,circle02);
cout<<endl<<"面积之差:"<<endl;
cout<<areaDistance(circle01,circle02);
}
两圆心距离公式:
d = sqrt(pow(fabs(circle01.x- circle02.x), 2) + pow(fabs((circle01.y - circle02.y)), 2))
圆的面积公式:
s = Pi * r * r.
修改:可从键盘读取两元的圆心坐标和半径。