如果一个类中的一个成员函数想去访问另一个类的私有成员,需要使用友元成员函数,这两个类是各自有自己的头文件和cpp文件,怎么才能实现友元成员函数呢?友元函数和友元类都可以做到,不知道友元成员函数该怎么写,需要注意的细节是什么?
如果一个类中的一个成员函数想去访问另一个类的私有成员,需要使用友元成员函数,这两个类是各自有自己的头文件和cpp文件,怎么才能实现友元成员函数呢?友元函数和友元类都可以做到,不知道友元成员函数该怎么写,需要注意的细节是什么?
通常来说,类中的私有成员,只有被类里的成员函数访问,在类外是不能访问的,但类外有些情况下需要访问,就显得很困难,这时候就需要友元函数。其命名为friend。
这里,举一个例子(两点之间线段最短)
#include<iostream>
#include<math.h>
using namespace std;
class Point
{
private:
double x;
double y;
public:
Point(double a,double b)
{
x = a;
y = b;
}
int GetPoint()
{
cout<<"("<<x<<","<<y<<")";
return 0;
}
friend double Distance(Point &a,Point &b);
};
//求两点之间的距离
double Distance(Point &a,Point &b)
{
double xx;
double yy;
xx = a.x-b.x;
yy = a.y-b.y;
return sqrt(xx*xx+yy*yy);
}
int main()
{
Point A(2.0,3.0);
Point B(1.0,2.0);
double dis;
dis = Distance(A,B);
cout<<dis<<endl;
return 0;
}
最后,提醒一句的是,友元并不属于这个类本身,无论是友元函数还是友元类。都不能使用类内的this指针,同时也不可以被继承
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
我就不啰嗦了,贴代码