C++入门基础知识150—【关于C++ 输入/输出运算符重载】

成长路上不孤单😊😊😊😊😊😊

【14后😊///C++爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】

今日分享关于C++输入/输出运算符重载 的相关内容!

关于【C++输入/输出运算符重载】

目录:

  • 一、什么是输入/输出运算符
  • 二、什么是输入输出运算符重载
  • 三、输入输出运算符重载格式
  • 四、输入输出运算符重载参数之间的区别
  • 五、重载提取运算符 >> 和插入运算符 <<及示例

一、什么是输入/输出运算符

输入/输出运算符‌是指在编程中用于处理输入和输出操作的符号。在C++中,输入运算符是">>",输出运算符是"<<"。这些运算符分别用于从输入设备读取数据和向输出设备写入数据。

1、输入运算符">>"

输入运算符">>"用于从输入流中读取数据。它的操作对象是istream类的对象,可以读取预定义类型的变量或重载了该运算符的类对象。例如,使用"cin >> variable"可以从标准输入(通常是键盘)读取数据到变量中‌1。

2、输出运算符"<<"

输出运算符"<<"用于向输出流写入数据。它的操作对象是ostream类的对象,可以写入预定义类型的变量或重载了该运算符的类对象。例如,使用"cout << variable"可以将变量的值输出到标准输出(通常是屏幕)上‌1。

3、使用场景和示例

在C++中,输入和输出运算符广泛应用于控制台应用程序中。以下是一些使用这些运算符的示例:

这段代码首先提示用户输入两个整数,然后读取这两个整数,并输出它们。这里使用了"<<"进行输出,使用">>"进行输入‌

二、什么是输入输出运算符重载

‌**输入输出运算符重载**‌是指在C++中,对输入运算符(>>)和输出运算符(<<)进行重载,以实现对自定义类型的输入输出操作。通过重载这些运算符,可以定义如何将自定义类型的数据读取到变量中或将数据输出到输出流中。

1、输入运算符重载

输入运算符(>>)用于从输入流(如键盘或文件)中读取数据,并将其存储到变量中。重载输入运算符时,通常需要定义一个友元函数,该函数接受一个输入流对象和一个自定义类型的对象作为参数,并返回输入流对象的引用。例如:

2、输出运算符重载

输出运算符(<<)用于将数据发送到输出流(如屏幕或文件)以供显示。重载输出运算符时,同样需要定义一个友元函数,该函数接受一个输出流对象和一个自定义类型的对象作为参数,并返回输出流对象的引用。例如:

3、示例代码

假设有一个自定义的MyString类,我们可以这样重载输入输出运算符:

这段代码定义了一个输出运算符重载函数,用于将MyString对象的信息输出到标准输出流(如cout)。通过这种方式,我们可以方便地将自定义类型的数据以期望的格式输出到控制台或其他输出流中。

三、输入输出运算符重载格式

在C++中,输入输出运算符重载的格式如下‌:

1、输出运算符重载

输出运算符重载通常使用<<运算符,其格式如下:

例如,对于类Complex,输出运算符重载的示例代码如下:

在这个例子中,operator<<是一个友元函数,它接受一个ostream引用和一个Complex对象的引用作为参数,并返回一个ostream引用。这样可以在cout中使用<<运算符输出Complex对象。

2、输入运算符重载

输入运算符重载通常使用>>运算符,其格式如下:

例如,对于类Complex,输入运算符重载的示例代码如下:

在这个例子中,operator>>也是一个友元函数,它接受一个istream引用和一个Complex对象的引用作为参数,并返回一个istream引用。这样可以在cin中使用>>运算符输入Complex对象。

四、输入输出运算符重载参数之间的区别

**输入输出运算符重载参数之间的主要区别在于它们的参数位置和返回值类型。**‌

1、输入运算符重载(>>)
  • 参数位置 ‌:输入运算符重载的第一个参数是输入流(如 istream),第二个参数是目标对象。例如,istream& operator>>(istream& is, Complex& c);‌12。
  • 返回值类型 ‌:输入运算符重载的返回值类型是输入流(istream)的引用,这样可以在读取多个对象时保持流的状态不变。例如,cin >> c1 >> c2;‌2。
2、输出运算符重载(<<)
  • 参数位置 ‌:输出运算符重载的第一个参数是输出流(如 ostream),第二个参数是要输出的对象。例如,ostream& operator<<(ostream& os, const Complex& c);‌12。
  • 返回值类型 ‌:输出运算符重载的返回值类型是输出流(ostream)的引用,这样可以在连续输出多个对象时保持流的状态。例如,cout << c1 << c2;‌2。
3、友元函数和成员函数的选择
  • 友元函数‌:如果运算符需要访问类的私有成员,通常将其定义为友元函数。例如,在重载输入输出运算符时,需要将函数声明为友元函数,以便访问类的私有成员变量‌12。
  • 成员函数‌:对于一些操作符,如赋值(=)、下标([])、调用(())等,通常定义为成员函数,因为这些操作符与类的状态紧密相关‌3。
4、示例代码

以下是一个简单的例子,演示如何重载输入输出运算符:

在这个例子中,operator<<operator>>都被定义为友元函数,以便访问类的私有成员变量。

五、重载提取运算符 >> 和插入运算符 <<及示例

C++ 能够使用流提取运算符 >> 和流插入运算符 << 来输入和输出内置的数据类型。您可以重载流提取运算符和流插入运算符来操作对象等用户自定义的数据类型。

在这里,有一点很重要,我们需要把运算符重载函数声明为类的友元函数,这样我们就能不用创建对象而直接调用函数。

下面的实例演示了如何重载提取运算符 >> 和插入运算符 <<。

当上面的代码被编译和执行时,它会产生下列结果:

相关推荐
LaoZhangAI39 分钟前
Claude MCP模型上下文协议详解:AI与外部世界交互的革命性突破【2025最新指南】
前端
LaoZhangAI40 分钟前
2025最全Cursor MCP实用指南:15个高效工具彻底提升AI编程体验【实战攻略】
前端
Kagerou1 小时前
vue3基础知识(结合TypeScript)
前端
市民中心的蟋蟀1 小时前
第五章 使用Context和订阅来共享组件状态
前端·javascript·react.js
逆袭的小黄鸭1 小时前
JavaScript 闭包:强大特性背后的概念、应用与内存考量
前端·javascript·面试
carterwu1 小时前
各个大厂是怎么实现组件库和相应扩展的?基础组件、区块、页面
前端
Face1 小时前
promise 规范应用
前端
Mintopia1 小时前
Node.js 中 fs.readFile API 的使用详解
前端·javascript·node.js
Face1 小时前
事件循环
前端·javascript
ONE_Gua1 小时前
chromium魔改——navigator.webdriver 检测
前端·后端·爬虫