C++编程:理解并运用友元函数访问私有成员
需积分: 35 74 浏览量
更新于2024-08-24
收藏 1.05MB PPT 举报
"C++编程中,判断二进制文件是否读到文件尾是常见的操作,通常使用ifstream对象的eof()函数来实现。在处理文件时,eof()函数是一个关键的检查点,用于确定是否已经到达文件的末尾。当文件流的读取位置到达文件实际内容的结尾时,eof()函数会返回非零值,否则返回零。在提供的代码示例中,可以看到如何使用这个功能。
首先,创建一个ifstream对象`infile`,并打开指定的二进制文件"data1.dat",同时设置打开模式为ios::in和ios::binary。接着,检查`infile`是否成功打开,如果打开失败,程序会输出错误信息并退出。然后,使用一个字符数组`str`和循环,通过`read()`函数读取文件内容,只要`!infile.eof()`为真,就会持续读取,直到文件尾部。
此外,提到了C++中的友元函数(friend function)特性。友元函数允许类外部的函数访问类的私有和保护成员,打破了封装性。在类中声明一个函数为友元,需要使用`friend`关键字。例如,类A有一个友元函数`float Sum(A&)`,它可以访问A的私有成员`x`和`y`。在main函数中,我们可以看到友元函数`Sum(t2)`的调用,它直接访问了对象`t2`的数据,而不通过成员函数。
友元函数不是类的成员,因此它们不具有this指针,需要通过对象名或对象引用作为参数来访问成员。友元函数可以访问类的所有成员,包括私有和保护的,而普通函数只能访问公共成员。与普通函数相比,友元函数的声明必须在类的定义内部,但其定义可以放在类内或类外。
在示例中,类A有一个成员函数`float Sum()`和一个友元函数`friend float Sum(A&)`,两者都计算`x`和`y`的和,但友元函数可以直接访问私有成员,而成员函数则需要通过`return x + y;`来实现。
总结来说,判断二进制文件是否读到文件尾的关键是使用ifstream对象的eof()函数,而友元函数是C++中一种特殊的功能,它提供了一种方式让类外部的函数能够访问类的私有和保护成员,增强了代码的灵活性,但同时也可能对类的封装性造成影响。"
2010-10-08 上传
2009-07-07 上传
2008-10-25 上传
2023-07-25 上传
2024-03-20 上传
2023-05-10 上传
2024-09-10 上传
2023-09-08 上传
2024-04-04 上传
深井冰323
- 粉丝: 23
- 资源: 2万+
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构