C++面向对象:运算符重载——流提取运算符‘>>’

需积分: 50 2 下载量 47 浏览量 更新于2024-08-16 收藏 5.34MB PPT 举报
"重载流提取运算符‘>>’在C++中的应用" 在C++编程中,运算符重载是一项重要的特性,允许我们为现有的运算符赋予新的含义,以适应自定义数据类型的需要。在本资源中,我们将关注的是如何重载流提取运算符`>>`,以便能够方便地从输入流中读取自定义类的数据,如在描述中提到的复数类`Complex`。 首先,重载流提取运算符`>>`通常是为了使得用户能够像使用内置类型一样,通过`cin>>`来输入自定义类的对象。在类`Complex`中,我们需要声明一个友元函数,这是因为流提取运算符需要访问类的私有或保护成员。友元函数声明如下: ```cpp friend istream& operator>>(istream&, Complex&); ``` 这个友元函数接受一个输入流`istream`的引用和一个`Complex`对象的引用作为参数。`istream`通常是`cin`,表示标准输入流。函数返回值是一个`istream`的引用,这是为了支持链式操作,例如`cin >> a >> b`。 接下来,我们在类外定义这个友元函数。下面是一个示例实现: ```cpp istream& operator>>(istream& input, Complex& c) { cout << " 请输入复数的实部和虚部:"; input >> c.real >> c.imag; // 读取实部和虚部 return input; } ``` 在这个函数中,我们提示用户输入复数的实部和虚部,然后使用`input`流将输入的数据赋值给`Complex`对象的成员变量`real`和`imag`。最后,返回输入流的引用,使得可以继续进行其他输入操作。 在C++的学习过程中,从C到C++的过渡是一个关键步骤。C++不仅仅是C语言的扩展,它引入了面向对象编程的概念,如类、对象、封装、继承和多态性。C++的词法和词法规则也与C语言相似,但增加了如类、模板、异常处理和命名空间等面向对象的特性。 在1980年代末至1990年代初,随着C++的发展,从最初的预编译器形式到完整的编译器,逐步增加了多重继承、类模板、异常处理和命名空间等功能,使得C++成为了一种功能强大且灵活的编程语言。学习C++意味着你可以同时掌握面向过程和面向对象的编程方法,这在解决不同复杂度问题时都十分有用。 C++的关键词和标识符是其语法的基础。关键词如`int`、`float`、`if`、`else`、`while`等是语言中预定的特殊标识,而标识符则是程序员自定义的名称,用于命名函数、类、变量等。运算符,如`+`、`-`、`*`、`/`以及`>>`,则表示特定的操作。在重载`>>`运算符后,我们可以使自定义类的行为更加符合C++的输入/输出语境,提升代码的可读性和易用性。