c++中的友元函数作用是破坏了类的封装性,在类的内部的成员函数中,可对类的私有属性进行访问与修改,但是在类的外部,如果属性是private, 就无法对其进行修改。
但是, 友元函数能够破坏类的封装性,在全局函数中, 能够对类的私有数据变量进行访问。
要想使用友元函数,必须要在类中进行友元函数的声明,声明的位置不加限定,可以在public区域,也可以在private区域。
下面代码是利用友元函数计算两个位置点之间的距离
#include<iostream>
using namespace std;
// 友元函数的使用
class Point {
private:
int x;
int y;
//声明友元函数
friend double Dist(Point& p1, Point& p2);
public:
//构造函数
Point(int x, int y) {
this->x = x;
this->y = y;
}
};
double Dist(Point& p1, Point& p2) {
//破坏类的封装性,可以直接访问私有数据成员
double s;
s = sqrt((p1.x - p2.x) *(p1.x-p2.x) + (p1.y - p2.y) *(p1.y-p2.y));
//s = sqrt(pow(p1.x - p2.x) + pow(p1.y - p2.y));
return s;
}
int main() {
Point p1(1, 2);
Point p2(3, 4);
double dis = Dist(p1, p2);
cout << "两点之间的距离为: " << dis << endl;
system("pause");
}