静态函数是类方法,只访问静态成员而不接收 this 指针;友元函数不属于类,可以访问所有成员并接收 this 指针。
C 中静态函数与友元函数的区别
静态函数
- 属于类但并不属于任何特定的对象,也可以称为类方法。
- 使用 static 关键字声明。
- 只可以访问类的静态成员。
- 不会接收 this 指针。
友元函数
- 不属于任何类。
- 使用 friend 关键字声明。
- 可以访问类的所有成员,包括私有成员。
- 可以接收 this 指针。
表格总结
特征 | 静态函数 | 友元函数 |
---|---|---|
类成员资格 | 是 | 不是 |
访问权限 | 类静态成员 | 类所有成员 |
this 指针 | 不接收 | 可以接收 |
声明方式 | static 关键字 | friend 关键字 |
实战案例
静态函数示例: 计算圆的面积
class Circle { public: static double calculateArea(double radius) { return 3.14 * radius * radius; } }; int main() { double radius = 5.0; double area = Circle::calculateArea(radius); cout << "圆的面积:" << area << endl; return 0; }
友元函数示例: 打印私有成员的值
class Student { private: int age; public: friend void printAge(Student& student); }; void printAge(Student& student) { cout << "年龄:" << student.age << endl; } int main() { Student student; student.age = 20; printAge(student); return 0; }
以上是C++ 静态函数与友元函数有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

静态函数在编译时绑定,无需对象实例,可访问静态成员和全局变量,不可继承;动态函数在运行时绑定,需要对象实例,可访问非静态成员和局部变量,可继承。

静态函数性能考虑如下:代码大小:静态函数通常更小,因为不包含成员变量。内存占用:不属于任何特定对象,不占用对象内存。调用开销:更低,无需通过对象指针或引用调用。多线程安全:通常线程安全,因为不依赖于类实例。

友元函数是C++中可访问其他类私有成员的特殊函数。它们解决类封装带来的访问限制,用于解决类间数据操作、全局函数访问私有成员、跨类或编译单元代码共享等问题。用法:使用friend关键字声明友元函数,可访问私有成员。注意:谨慎使用友元函数,避免绕过封装机制带来的错误。仅在必要时使用,限制访问权限,谨慎使用修改器函数。

C++中友元函数访问私有成员的方法有两种:在类内声明友元函数。声明一个类作为友元类,该类中所有的成员函数都可以访问另一个类的私有成员。

友元函数对类的封装性有影响,包括降低封装性、增加攻击面和提高灵活性。它可以访问类的私有数据,如示例中定义为Person类的友元的printPerson函数可以访问Person类的私有数据成员name和age。程序员需权衡风险与收益,仅在必要时使用友元函数。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),