C++教程:重载输入输出运算符详解

需积分: 23 0 下载量 200 浏览量 更新于2024-08-24 收藏 8.81MB PPT 举报
"重载输入(提取)和输出(插入)运算符是C++中扩展类功能的重要手段,允许用户自定义对象与标准输入输出流的交互方式。在C++编程中,`<<`和`>>`是两个常用的运算符,分别用于输出(插入)和输入(提取)数据。在描述的代码示例中,类`A`包含两个浮点型成员变量`x`和`y`,并提供了构造函数、设置方法和显示方法。然而,该示例中`A`的对象无法直接通过`cin`进行输入或`cout`进行输出,因为默认情况下,这些运算符并不支持自定义类型。 为了使类的对象能够使用流进行输入输出,我们需要重载`<<`和`>>`运算符。通常,重载输入运算符`>>`会返回一个引用,以便进行连续输入,而输出运算符`<<`通常返回`ostream`类型的引用,以便进行链式输出。以下是重载这两个运算符的示例: ```cpp #include <iostream> class A { float x, y; public: A(float a = 0, float b = 0) : x(a), y(b) {} void Set(float a, float b) { x = a; y = b; } void Show() { std::cout << x << '\t' << y << std::endl; } // 重载输出(插入)运算符 friend std::ostream& operator<<(std::ostream& os, const A& a) { os << a.x << '\t' << a.y; return os; } // 重载输入(提取)运算符 friend std::istream& operator>>(std::istream& is, A& a) { is >> a.x >> a.y; return is; } }; int main() { A a(2, 3); a.Set(20, 30); a.Show(); std::cin >> a; // 使用重载的输入运算符 std::cout << a; // 使用重载的输出运算符 return 0; } ``` 这段代码中,`operator<<`和`operator>>`被声明为类`A`的友元函数,因为它们需要访问类的私有或保护成员。通过重载这两个运算符,现在可以方便地使用`cin`和`cout`对`A`的对象进行输入和输出操作。 C++语言的发展历程是多样的,从早期的BCPL和B语言,到C语言的诞生,再到C++的出现。C++在C语言的基础上引入了面向对象的概念,使得程序设计更加灵活和高效。C++语言的主要特点包括结构化编程、丰富的运算符、良好的可移植性以及灵活的数据结构,使得它在各种领域都得到了广泛的应用。然而,它的语法相对自由,对初学者来说可能会有一定的学习难度,特别是调试程序时可能遇到挑战。熟练掌握C++,包括如何有效地重载输入输出运算符,是成为专业C++程序员的关键步骤。"