C++面向对象:运算符重载与输入输出流

需积分: 16 1 下载量 131 浏览量 更新于2024-08-19 收藏 5.27MB PPT 举报
"这篇资料主要介绍了C++语言的学习,特别是重载函数的使用,特别是针对输入输出流的重载操作符`>>`和`<<`。资料内容涵盖C++的基础知识,面向对象程序设计的核心概念,以及C++的发展历程和语言特性。" 在C++编程中,重载函数是同一个函数名但具有不同参数列表的现象,它允许我们根据传入的参数类型或数量执行不同的操作。在描述中提到的`>>`和`<<`运算符重载,它们分别用于输入和输出操作,通常与I/O流一起使用。在C++中,为了能够将自定义类型的数据方便地读取和打印,我们需要重载这两个运算符。这两个运算符的特殊之处在于,它们的重载形式通常定义为友元函数,而非成员函数。这是因为第一个参数通常是标准的输入流(如`std::cin`)或输出流(如`std::cout`),而这些流对象并非自定义类型的实例,因此无法作为成员函数的`this`指针。 `istream & operator>>(istream&, 自定义类&)`这个重载函数使得我们可以像处理内置类型一样,使用`>>`从输入流中提取自定义类型的数据。例如,如果你有一个名为`Person`的类,你可以这样设计: ```cpp class Person { std::string name; int age; public: friend std::istream& operator>>(std::istream& is, Person& p) { is >> p.name >> p.age; return is; } }; ``` 这使得你可以直接写出这样的代码来读取`Person`对象: ```cpp Person p; std::cin >> p; ``` 同样,`ostream & operator<<(ostream&, 自定义类&)`重载函数用于将自定义类型的数据输出到流中,如: ```cpp std::ostream& operator<<(std::ostream& os, const Person& p) { os << "Name: " << p.name << ", Age: " << p.age; return os; } ``` 现在,你可以方便地将`Person`对象输出到控制台或其他输出流: ```cpp std::cout << p << std::endl; ``` 资料还提到了C++的发展历程,从C语言的结构化和模块化特点出发,到引入面向对象编程的机制,如类和对象,以及后来的继承、多态性、虚函数等特性。C++不仅扩展了C语言的面向过程功能,而且添加了面向对象编程的工具,使得它成为一个既支持过程式编程又支持面向对象编程的多功能语言。 C++的词法和词法规则是编程的基础,包括关键字、标识符、运算符、分隔符和注释符等。关键字是语言中预定义的保留字,如`int`、`if`等,标识符是程序员创建的变量、函数等的名称,而运算符如`+`、`-`、`*`等表示特定的计算操作。了解这些基础知识对于理解和编写有效的C++代码至关重要。