C++中的友元函数特性解析
需积分: 21 158 浏览量
更新于2024-08-19
收藏 8.66MB PPT 举报
"友元函数与一般函数在C++中的区别"
友元函数是C++中一个独特的特性,它与一般函数在访问权限和声明方式上有显著的差异。友元函数不是类的成员,但被授予了特殊权限,可以访问类的私有(private)和保护(protected)成员,而不仅限于公有(public)成员。这是友元函数与一般函数最主要的区别,一般函数只能访问类的公有接口。
1. 声明方式:
友元函数必须在类的定义内部进行声明,表示该函数是该类的友元。声明之后,友元函数可以在类的外部定义其函数体,也可以在类的内部定义。而一般函数的定义和声明通常独立于类的定义,它们有自己的作用域和生命周期。
2. 访问权限:
友元函数拥有类的内部访问权限,可以不受限制地访问类的所有成员,包括私有和保护成员,这使得友元函数在实现某些特定功能时非常有用,比如在封装数据结构时提供内部操作。而一般函数只能通过类的公有接口来访问成员,不能触及私有和保护成员,除非这些成员通过公有方法暴露出来。
3. 关联性:
友元函数不是类的成员,不占用类的对象的空间,因此不会增加对象的大小。而成员函数是类的一部分,每个对象都包含一个成员函数的副本,这可能会导致对象的大小增加。
4. 调用方式:
友元函数的调用方式与一般函数相同,使用函数名和参数列表。而成员函数可以通过对象或指针调用,对于非静态成员函数,还需要隐式传递一个指向对象的`this`指针。
5. 多态性:
友元函数不具备多态性,因为它们不是类的成员,无法通过虚函数机制实现动态绑定。而成员函数(尤其是虚成员函数)可以参与多态调用,允许在基类指针或引用上调用派生类的重写版本。
6. 封装原则:
使用友元函数可能会打破封装原则,因为它们可以直接访问类的私有和保护成员,这可能导致代码难以维护和理解。而一般函数遵循封装,只通过公有接口交互,更符合面向对象设计的原则。
友元函数在C++中是为了解决某些特定问题,如实现特定的数据结构或算法,而一般函数是程序设计的基本构建块,两者各有其适用场景。在设计时,应谨慎使用友元函数,以保持代码的清晰性和封装性。
2018-04-28 上传
2020-09-05 上传
2020-12-31 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
清风杏田家居
- 粉丝: 21
- 资源: 2万+
最新资源
- Android应用源码之写的google map api 应用.zip项目安卓应用源码下载
- AdvExpFig:导出 MATLAB 图-matlab开发
- SuperChangelog:超级变更日志插件的源代码
- death_calc_version2
- hw_python_oop
- LX-PWM,ev3程序怎么看c语言源码,c语言程序
- material-typeahead-sample
- 基于Linux、QT、C++的“别踩白块儿”小游戏
- physx-js:PhysX for JavaScript
- 提取均值信号特征的matlab代码-First_unofficial_entry_2021:First_unofficial_entry_20
- Siege_solution_website
- ecf-2021-jd
- number.github.io:通过Szymon Rutyna
- Kinesys-RenPy-Practice:RenPy制作游戏
- Ad,c语言源码反码补码转换代码,c语言程序
- vgrid:具有魔术媒体查询混合功能的可变SCSS网格系统