#include<iostream>
#include<cmath>
using namespace std;
class Point;
class PointManager {
double getDistance(Point& x1, Point& x2);
};
class Point {
public:
Point(int x) {
this->x = x;
}
//声明友元函数,Point类认为全局函数(类外部的函数)getDistance是我的一个朋友,
//这个函数可以直接使用我的私有成员
friend double getDistance(Point& x1, Point& x2);
//声明一个其他类的成员函数为友元
friend double PointManager::getDistance(Point& x1, Point& x2);
//声明友元类
friend class TestPoint;
private:
int x;
};
double getDistance(Point& x1, Point& x2) {
return abs(x1.x - x2.x); // 可以直接使用私有成员
}
double PointManager::getDistance(Point& x1, Point& x2) {
return abs(x1.x - x2.x); // 可以直接使用私有成员
}
class TestPoint {
public:
void print(Point& point) {// 可以直接使用私有成员
cout << point.x << endl;
}
};
int main(int argc,char* argv[]) {
Point p1(10);
Point p2(20);
cout << getDistance(p1, p2) << endl;
}
8.友元函数友元类
最新推荐文章于 2021-05-29 07:30:06 发布