C++面向对象:运算符重载——流提取运算符‘>>’
需积分: 16 20 浏览量
更新于2024-08-19
收藏 5.27MB PPT 举报
"这篇资料是关于C++编程的学习教程,主要关注的是运算符重载,特别是如何重载流提取运算符“>>”。该教程属于C++面向对象程序设计的范畴,涵盖了C++的基础知识,包括从C语言到C++的发展历程,C++的词法和词法规则,以及面向对象的特性。在这一部分,作者通过一个例子介绍了如何在类中声明并定义友元函数来重载流提取运算符,以便能够使用cin>>从输入流中读取自定义类型(如复数)的数据。"
在C++中,运算符重载是使我们能够根据需求定制运算符行为的一种机制。在本例中,讨论的是重载输入流提取运算符“>>”,这通常用于从标准输入(如键盘)读取数据。在C++标准库中,运算符“>>”被用于从`std::istream`对象(如`std::cin`)中提取数据。为了使用户定义的类型(如这里的复数`Complex`)能够使用这个运算符,我们需要声明并实现一个友元函数。
首先,我们在类`Complex`内部声明友元函数`friend istream& operator >> (istream&, Complex&)`。声明友元函数是因为流提取操作需要访问类的私有或保护成员,而友元函数可以访问这些成员,即使它们不是成员函数。然后,在类外部定义这个函数:
```cpp
istream& operator >> (istream& input, Complex& c) {
cout << " 请输入复数的实部和虚部:";
input >> c.real >> c.imag;
return input;
}
```
这个重载的运算符函数接受一个`istream`引用和一个`Complex`类型的引用作为参数。函数首先提示用户输入复数的实部和虚部,然后使用`input`流依次提取这两个值并存储在复数对象`c`的相应成员变量`real`和`imag`中。最后,函数返回输入流的引用,这允许链式操作,例如`cin >> c1 >> c2`。
教程中还提到了C++的发展历史,从C语言的基础上引入了面向对象编程的概念,以及C++如何逐步发展和完善,包括类的多重继承、模板、异常处理和命名空间等特性。学习C++意味着你可以利用其面向过程和面向对象的能力,根据项目需求灵活选择合适的编程范式。
此外,C++的词法和词法规则也是初学者需要掌握的基础知识。C++的字符集、关键字、标识符、运算符和分隔符都有明确的规定。关键字是语言中预定义的具有特殊含义的标识符,如`int`、`float`、`if`等。标识符则是程序员自定义的名称,用于标识函数、类、变量等。运算符如`+`、`-`、`*`、`/`等代表不同的操作,而分隔符如`;`、`,`、`(`、`)`等用于组织代码结构。
这篇教程旨在帮助读者理解C++中的运算符重载,特别是如何重载流提取运算符,同时回顾了C++的基本概念和语法,为深入学习C++打下坚实的基础。
102 浏览量
845 浏览量
2010-05-14 上传
点击了解资源详情
本题目要求完成复数类对象的输入运算符>>和输出运算符<<的重载,具体要求如下:定义复数类,包括两个私有成员:double real,imag;定义复数类的构造函数;重载输入运算符>>,使主函数可以通过
2023-06-28 上传
2023-05-30 上传
2023-05-10 上传
2023-04-19 上传
2023-05-30 上传
![](https://profile-avatar.csdnimg.cn/f4c5f3f734c546bba0f87d3ae1afe579_weixin_42202724.jpg!1)
鲁严波
- 粉丝: 20
- 资源: 2万+
最新资源
- 解决Eclipse配置与导入Java工程常见问题
- 真空发生器:工作原理与抽吸性能分析
- 爱立信RBS6201开站流程详解
- 电脑开机声音解析:故障诊断指南
- JAVA实现贪吃蛇游戏
- 模糊神经网络实现与自学习能力探索
- PID型模糊神经网络控制器设计与学习算法
- 模糊神经网络在自适应PID控制器中的应用
- C++实现的学生成绩管理系统设计
- 802.1D STP 实现与优化:二层交换机中的生成树协议
- 解决Windows无法完成SD卡格式化的九种方法
- 软件测试方法:Beta与Alpha测试详解
- 软件测试周期详解:从需求分析到维护测试
- CMMI模型详解:软件企业能力提升的关键
- 移动Web开发框架选择:jQueryMobile、jQTouch、SenchaTouch对比
- Java程序设计试题与复习指南