C++友元函数friend
2021/12/18 22:23:23
本文主要是介绍C++友元函数friend,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一.来源
下面是一个计算两点之间距离的方法。
#include <iostream > #include <math.h> class Point { private: int x; int y; public: Point(int x, int y) { this->x = x; this->y = y; } int getX() { return x; } int getY() { return y; } }; //计算两点之间距离 double distance(Point& p1, Point& p2) { int X = p1.getX() - p2.getX();//频繁使用getX() int Y = p1.getY() - p2.getY();//频繁使用getY() return sqrt(X*X+Y*Y); } using namespace std; int main() { Point p1(1, 1), p2(2, 2); cout << distance(p1, p2); }
可以发现,频繁的调用getX()、getY(),导致频繁的压栈出栈,浪费时间空间。
所以引出友元函数。
友元函数就是为了解决,方便某一个函数频繁使用类中变量。
二.使用
改写上面例子:
class Point { private: int x; int y; public: Point(int x, int y) { this->x = x; this->y = y; } int getX() { return x; } int getY() { return y; } friend double distance(Point& p1, Point& p2);//友元函数 }; //计算两点之间距离 double distance(Point& p1, Point& p2) { int X = p1.x - p2.x;//改写 int Y = p1.y - p2.y;//改写 return sqrt(X*X+Y*Y); } using namespace std; int main() { Point p1(1, 1), p2(2, 2); cout << distance(p1, p2); }
通过增加函数一个声明,就可以在这个声明的函数内部,访问私有成员变量。
friend double distance(Point& p1, Point& p2);
三.问题
友元函数破坏了类的封装,一般不建议使用。
这篇关于C++友元函数friend的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01UniApp 中组件的生命周期是多少-icode9专业技术文章分享
- 2024-11-01如何使用Svg Sprite Icon简化网页图标管理
- 2024-10-31Excel数据导出课程:新手从入门到精通的实用教程
- 2024-10-31Excel数据导入课程:新手入门指南
- 2024-10-31RBAC的权限课程:新手入门教程
- 2024-10-31Svg Sprite Icon课程:新手入门必备指南
- 2024-10-31怎么配置 L2TP 允许多用户连接-icode9专业技术文章分享
- 2024-10-31怎么在FreeBSD上 安装 OpenResty-icode9专业技术文章分享
- 2024-10-31运行 modprobe l2tp_ppp 时收到“module not found”消息提醒是什么-icode9专业技术文章分享
- 2024-10-31FreeBSD的下载命令有哪些-icode9专业技术文章分享