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

需积分: 16 1 下载量 96 浏览量 更新于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++打下坚实的基础。