主要是针对于类友元进行复习,三维坐标中直线的长度就是两个端点之间各分量距离平方开跟,各分量距离x轴与x轴相减的绝对值,y轴与y轴相减的绝对值,z轴与z轴相减的绝对值。
#include <iostream>
using namespace std;
class Dian
{
public:
Dian(int x = 0, int y = 0, int z = 0) : x(x), y(y), z(z) {}
int getx() { return x; }
int gety() { return y; }
int getz() { return z; }
friend float juli(Dian &a, Dian &b);//友元函数,不是成员函数,不能使用成员函数运算符来调用
private:
int x, y, z;
};
float juli(Dian &a, Dian &b)//a,b分别表示a点,b点,各有三个坐标
{
double x = a.x - b.x; //a.x表示a点的x坐标
double y = a.y - b.y;
double z = a.z - b.z;
return static_cast<float>(sqrt(x * x + y * y + z * z));
}
int main()
{
Dian A(4, 5, 8), B(6, 8, 10);
cout << "两点之间的距离是:";
cout << juli(A, B) << endl;
return 0;
}
附:
1.为何需要友元?
答:在为类重载二元运算时(带两个参数的运算符)常常需要友元。
2.创建友元的两步走是什么?
答:第一步,将友元函数放在类声明中,并在其原型前加上关键字friend;
第二步,编写函数定义,且不要再定义中使用friend。
类的友元函数是非成员函数,其访问权限与成员函数相同。