C++程序设计:重载输入输出运算符解析

需积分: 43 0 下载量 148 浏览量 更新于2024-08-19 收藏 8.66MB PPT 举报
"重载输入(提取)和输出(插入)运算符-C++程序设计(谭浩强完整版)" 在C++编程中,输入和输出是程序与用户交互的基础。C++通过预定义的流对象cin和cout实现基本的数据输入和输出。然而,当涉及到自定义类型(如类`A`)的对象时,这些内置的输入/输出操作符并不能直接作用于这些对象,因此需要进行重载。重载输入提取运算符`>>`和输出插入运算符`<<`可以使自定义类型能够像内置类型一样方便地进行I/O操作。 在给定的描述中,我们看到一个名为`A`的类,包含两个浮点型成员变量`x`和`y`。`A`类提供了一个默认构造函数,一个设置函数`Set`以及一个显示函数`Show`。但是,描述指出,对象`a`不能直接使用`cin>>a`和`cout<<a`进行输入输出,这是因为这些操作符尚未被重载。 重载输入提取运算符`>>`通常用于从标准输入(通常是键盘)读取数据。为了使`A`类的对象能够接受这样的输入,我们需要定义一个友元函数或者成员函数,该函数接受一个流对象(如`std::istream`)和一个`A`对象,然后从流中提取数据并赋值给对象的成员变量。示例代码如下: ```cpp friend std::istream& operator>>(std::istream& is, A& a) { is >> a.x >> a.y; return is; } ``` 同样,重载输出插入运算符`<<`用于将对象的数据写入标准输出(通常是显示器)。我们可以定义一个友元函数或成员函数,该函数接受一个流对象(如`std::ostream`)和一个`A`对象,然后将对象的成员变量输出到流中。示例代码如下: ```cpp friend std::ostream& operator<<(std::ostream& os, const A& a) { os << a.x << '\t' << a.y << std::endl; return os; } ``` 这样,我们就可以像处理内置类型一样处理`A`类的对象了: ```cpp int main() { A a(2, 3); // 重载的输入和输出运算符可以这样使用 std::cin >> a; std::cout << a; return 0; } ``` 重载输入/输出运算符是C++中提高代码可读性和灵活性的重要机制,特别是对于自定义类型。通过重载这些运算符,我们可以使类的行为更符合C++程序员的习惯,从而使得代码更加易于理解和维护。此外,这也可以帮助避免手动编写重复的输入输出代码,提高代码的复用性。