C++面向对象程序设计:运算符重载与流提取

需积分: 9 33 下载量 5 浏览量 更新于2024-08-23 收藏 5.33MB PPT 举报
"重载流提取运算符‘>>’在C++面向对象程序设计中的应用" 在C++中,运算符重载是面向对象编程的一个重要特性,它允许我们为已有的运算符赋予新的含义,以适应自定义类型的操作。在这个案例中,我们将详细探讨如何重载流提取运算符“>>”,以便在输入流cin中读取自定义类型的数据,如复数类Complex。 在C++中,流提取运算符“>>”通常用于从标准输入流cin读取数据。为了重载这个运算符以处理自定义类型,我们首先需要在复数类Complex中声明一个友元函数,这是因为我们需要访问类的私有成员来读取复数的实部和虚部。友元函数的声明如下: ```cpp friend istream& operator>>(istream&, Complex&); ``` 这里的参数列表包含一个输入流引用(istream&)和一个Complex类型的引用。友元函数的声明使得我们可以修改类的内部状态,而无需通过公有接口。 接下来,我们需要在类外部定义这个友元函数,如下所示: ```cpp istream& operator>>(istream& input, Complex& c) { cout << "请输入复数的实部和虚部:"; input >> c.real >> c.imag; return input; } ``` 在这个定义中,我们首先提示用户输入复数的实部和虚部,然后使用输入流input读取这两个值,并将它们分别存储在复数对象c的real和imag成员中。最后,返回输入流的引用,以便可以继续链式调用其他流操作。 这个重载的“>>”运算符使得我们可以像处理内置类型一样处理复数对象,如: ```cpp Complex c; cin >> c; ``` 这样的代码会从cin读取一对数值,创建一个复数对象并赋值给c。 C++中的面向对象特性,如运算符重载,极大地提高了代码的可读性和灵活性。通过重载流提取运算符,我们能够自然地将自定义类型集成到标准输入输出流中,使得与内置类型的操作保持一致,从而简化了程序的编写。 C++的发展历程从C语言的基础上引入了面向对象的特性,如类、对象、封装、继承和多态等。C++编译系统经历了多次升级,从最初的预处理器到完整的编译器,支持了如模板、异常处理和命名空间等高级功能。通过学习C++,程序员可以灵活地选择面向过程或面向对象的编程风格,以适应不同的项目需求。C++语言的词法和词法规则,包括关键字、标识符、运算符、分隔符和注释符,都是编程时必须掌握的基础知识。这些规则构成了C++程序的基本构造单元,确保了代码的正确性和可读性。