C++面向对象程序设计:友元函数与一般函数的区别解析
需积分: 10 138 浏览量
更新于2024-08-23
收藏 8.66MB PPT 举报
"友元函数与一般函数的不同点在于-C++面向对象程序设计(谭浩强)——教学ppt"
在C++编程中,面向对象特性的一个关键概念是友元函数。友元函数与一般函数的区别主要体现在它们对类成员的访问权限和声明方式上。以下是对这些差异的详细说明:
首先,友元函数的声明方式与众不同。它必须在类的定义内部被声明,以表明该函数被允许访问类的所有私有和保护成员。这与一般函数形成鲜明对比,一般函数不需要这样的声明,它们默认只能访问类的公有成员。例如:
```cpp
class MyClass {
private:
int privateVar;
protected:
int protectedVar;
public:
friend void friendFunc(MyClass& obj); // 友元函数声明
};
// 友元函数的定义,可以在类内或类外
void friendFunc(MyClass& obj) {
obj.privateVar = 10; // 可以访问私有成员
obj.protectedVar = 20; // 可以访问保护成员
}
```
而一般函数如果需要访问类的私有或保护成员,通常需要通过公共接口(即公有成员函数)进行,或者通过将类的对象设为友元,使对象可以访问这些私有或保护成员。
其次,友元函数并不属于类的成员,因此它们没有`this`指针,不能直接访问`this`所代表的对象的私有或保护成员。不过,友元函数可以接收类的对象作为参数,从而间接地访问这些成员。
```cpp
class MyClass {
public:
void publicFunc() {
// ...
}
};
// 一般函数
void normalFunc(MyClass obj) {
obj.publicFunc(); // 访问公有成员函数
// 不能直接访问私有或保护成员
}
```
友元函数在设计上提供了一种灵活性,允许外部代码对类的内部状态进行更直接的操控,这在某些情况下是必要的。然而,这也可能破坏封装性,增加代码的复杂性和潜在的风险。因此,应谨慎使用友元函数,只在确实需要的时候才引入。
C++中的友元函数和一般函数是两种不同的函数类型,它们在访问权限和声明方式上存在显著差异。友元函数可以跨越封装边界,访问类的私有和保护成员,而一般函数则受到封装的限制,只能访问类的公有成员。理解和合理利用这两种函数特性,是写出高效、安全的C++代码的关键。
2024-05-04 上传
2021-10-06 上传
254 浏览量
249 浏览量
200 浏览量
2023-06-06 上传
352 浏览量
2024-10-15 上传
2024-09-26 上传

劳劳拉
- 粉丝: 24
最新资源
- 掌握Ember.js用户活跃度跟踪,实现高效交互检测
- 如何在Android中实现Windows风格的TreeView效果
- Android开发:实现自定义标题栏的统一管理
- DataGridView源码实现条件过滤功能
- Angular项目中Cookie同意组件的实现与应用
- React实现仿Twitter点赞动画效果示例
- Exceptionless.UI:Web前端托管与开发支持
- 掌握Ruby 1.9编程技术:全面英文指南
- 提升效率:在32位系统中使用RamDiskPlus创建内存虚拟盘
- 前端AI写作工具:使用AI生成内容的深度体验
- 综合技术源码包:ASP学生信息管理系统
- Node.js基础爬虫教程:入门级代码实践
- Ruby-Vagrant:简化虚拟化开发环境的自动化工具
- 宏利用与工厂模式实践:驱动服务封装技巧
- 韩顺平Linux学习资料包:常用软件及数据库配置
- Anime-Sketch-Colorizer:实现动漫草图自动化上色