C++:输入输出运算符重载

在C++中,输入输出运算符是用于从标准输入设备(通常是键盘)读取数据或将数据输出到标准输出设备(通常是屏幕)的运算符。常用的输入输出运算符包括:

  1. 输入运算符 (>>): 用于从输入流(如键盘或文件)中读取数据,并将其存储到变量中。

  2. 输出运算符 (<<): 用于将数据发送到输出流(如屏幕或文件)以供显示。

当你需要使用输入输出运算符(<< 和 >>)重载来对自定义类型进行输入输出时,你通常需要考虑两个方面:

  1. 输出运算符重载:你可以使用输出运算符(<<)重载来定义如何将对象的信息输出到流中,比如输出到标准输出流(cout)或文件流中。

  2. 输入运算符重载:你可以使用输入运算符(>>)重载来定义如何从流中读取数据以初始化对象。

示例:
类:
class MyString {
private:int m_nNumberA;int m_nNumberB;
};

<< 输出运算符重载
   friend std::ostream & operator<<(std::ostream& cout,const MyString &obj) {cout << "NumberA:" << obj.m_nNumberA<<std::endl;cout << "NumberB:" << obj.m_nNumberB << std::endl;return cout;}

这段代码定义了一个名为 operator<< 的重载函数,用于输出 MyString 对象的信息。这个函数的作用是将 MyString 对象的成员变量 m_nNumberAm_nNumberB 输出到输出流中。

  • friend: 在这个函数声明中,friend 关键字表示这个函数是 MyString 类的友元函数,允许它访问 MyString 类的私有成员变量 m_nNumberAm_nNumberB。友元函数可以访问类的私有成员变量,这是为了方便操作数据而提供的一种机制。

  • std::ostream & operator<<(std::ostream& cout, const MyString &obj): 这是 operator<< 函数的声明,它接受一个 std::ostream 类型的输出流对象 cout 和一个 const MyString& 类型的对象 obj 作为参数,并返回一个 std::ostream 类型的对象引用。该函数用于输出 MyString 对象的信息到输出流中。

  • return cout;: 最后,函数返回输出流对象 cout,以便允许连续的输出操作。

通过重载输出运算符,可以定义如何将 MyString 对象的信息输出到输出流中,使得你可以使用 std::cout 或其他输出流来输出 MyString 对象的信息。

>>输入运算符重载
  friend std::istream& operator>>(std::istream& cin,MyString &obj) {cin >> obj.m_nNumberA;cin >> obj.m_nNumberB;return cin;}

代码定义了一个名为 operator>> 的重载函数,用于从输入流中读取数据并初始化 MyString 对象的成员变量。

  • friend: 在这个函数声明中,friend 关键字表示这个函数是 MyString 类的友元函数,允许它访问 MyString 类的私有成员变量 m_nNumberAm_nNumberB。友元函数可以访问类的私有成员变量,这是为了方便操作数据而提供的一种机制。

  • std::istream& operator>>(std::istream& cin, MyString &obj): 这是 operator>> 函数的声明,它接受一个 std::istream 类型的输入流对象 cin 和一个 MyString& 类型的对象 obj 作为参数,并返回一个 std::istream 类型的对象引用。该函数用于从输入流中读取数据,并将数据赋值给 MyString 对象的成员变量。

  • return cin;: 最后,函数返回输入流对象 cin,以便允许连续的输入操作。

通过重载输入运算符,你可以定义如何从输入流中读取数据,并初始化 MyString 对象的成员变量,使得你可以使用 std::cin 或其他输入流来输入数据并初始化 MyString 对象。

在程序中的使用:
int main(){MyString StringObjA;//使用>> 重载后的输入运算符std::cin >> StringObjA;//使用<< 重载后的输出运算符std::cout << StringObjA << std::endl;
​system("pause");return 0;
}

结果:

在类中对输入输出运算符进行重载,可以让我们自定义对该类对象的输入输出行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/6050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

逻辑漏洞:水平越权、垂直越权靶场练习

目录 1、身份认证失效漏洞实战 2、YXCMS检测数据比对弱&#xff08;水平越权&#xff09; 3、MINICMS权限操作无验证&#xff08;垂直越权&#xff09; 1、身份认证失效漏洞实战 上一篇学习了水平越权和垂直越权的相关基本知识&#xff0c;在本篇还是继续学习&#xff0c;这…

深度学习:基于Keras,使用长短期记忆人工神经网络模型(LSTM)对股票市场进行预测分析

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…

Electron-Builder 打包 Vue 项目避坑指南

最近在开发一个基于 Vue 的 Electron 项目&#xff0c;在打包时遇到了诸多问题&#xff0c;为了解决这些问题也查阅了非常多的资料&#xff0c;排除了很多坑。现在将可能遇到的问题整理成避坑指南&#xff0c;供大家参考&#xff08;此避坑指南后续还会继续更新&#xff09;。 …

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《计及高阶方程分段线性化的港口电-氢综合能源系统优化调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

Django运行不提示网址问题

问题描述&#xff1a;运行django项目不提示网址信息&#xff0c;也就是web没有起来&#xff0c;无法访问。 (my-venv-3.8) PS D:\Project\MyGitCode\public\it_blog\blog> python .\manage.py runserver INFO autoreload 636 Watching for file changes with StatReloader …

clang:在 Win10 上编译 MIDI 音乐程序

先从 Microsoft C Build Tools - Visual Studio 下载 1.73GB 安装 "Microsoft C Build Tools“ 访问 Swift.org - Download Swift 找到 Windows 10&#xff1a;x86_64 下载 swift-5.10-RELEASE-windows10.exe 大约490MB 建议安装在 D:\Swift\ &#xff0c;安装后大约占…

SQL 基础 | UNION 用法介绍

在SQL中&#xff0c;UNION操作符用于合并两个或多个SELECT语句的结果集&#xff0c;形成一个新的结果集。 使用UNION时&#xff0c;合并的结果集列数必须相同&#xff0c;并且列的数据类型也需要兼容。 默认情况下&#xff0c;UNION会去除重复的行&#xff0c;只保留唯一的行。…

Flutter笔记:使用Flutter私有类涉及的授权协议问题

Flutter笔记 使用Flutter私有类涉及的授权协议问题 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.cs…

【跟马少平老师学AI】-【神经网络是怎么实现的】(七-1)词向量

一句话归纳&#xff1a; 1&#xff09;神经网络不仅可以处理图像&#xff0c;还可以处理文本。 2&#xff09;神经网络处理文本&#xff0c;先要解决文本的表示&#xff08;图像的表示用像素RGB&#xff09;。 3&#xff09;独热编码词向量&#xff1a; 词表&#xff1a;{我&am…

ensp 配置s5700 ssh登陆

#核心配置 sys undo info-center enable sysname sw1 vlan 99 stelnet server enable telnet server enable int g 0/0/1 port lin acc port de vlan 99 q user-interface vty 0 4 protocol inbound ssh authentication-mode aaa q aaa local-user admin0 password cipher adm…

Java集合框架-容器源码分析

Java集合框架-容器&源码分析 文章目录 Java集合框架-容器&源码分析[TOC](文章目录)前言一、集合框架概述二、Collection接口及其子接口(List/Set)及实现类2.1 Collection接口中方法2.2 遍历&#xff1a;Iterator迭代器接口&foreach(5.0新特性)2.3 Connection子接口…

SQL 基础 | AS 的用法介绍

SQL&#xff08;Structured Query Language&#xff09;是一种用于管理和操作数据库的标准编程语言。 在SQL中&#xff0c;AS关键字有几种不同的用法&#xff0c;主要用于重命名表、列或者查询结果。 以下是AS的一些常见用法&#xff1a; 重命名列&#xff1a;在SELECT语句中&a…

C++基础—模版

C模板是C语言中实现泛型编程的核心机制&#xff0c;它允许程序员定义通用的代码框架&#xff0c;这些框架在编译时可以根据提供的具体类型参数生成相应的特定类型实例。 泛型编程的特点代码复用和安全性! 模板主要分为两大类&#xff1a;函数模板和类模板。 函数模板 基本语…

C++深度解析教程笔记7

C深度解析教程笔记7 第13课 - 进阶面向对象&#xff08;上&#xff09;类和对象小结 第14课 - 进阶面向对象&#xff08;下&#xff09;类之间的基本关系继承组合 类的表示法实验-类的继承 第15课 - 类与封装的概念实验-定义访问级别cmd 实验小结 第16课 - 类的真正形态实验-st…

Web,Sip,Rtsp,Rtmp,WebRtc,专业MCU融屏视频混流会议直播方案分析

随着万物互联&#xff0c;视频会议直播互动深入业务各方面&#xff0c;主流SFU并不适合管理&#xff0c;很多业务需要各种监控终端&#xff0c;互动SIP硬件设备&#xff0c;Web在线业务平台能相互融合&#xff0c;互联互通&#xff0c; 视频混流直播&#xff0c;录存直播推广&a…

vue3+vite项目中,图片显示为src=“[object Object]“

查了半天&#xff0c;网上都是教人改webpack配置&#xff08;很无语……&#xff09; 解决方法&#xff1a; 在原图片&#xff1b;路径后面加上?url // example <img src"/assets/imgs/stop.svg?url" alt"" />

c++ 筛选裁决文书 1985-2021的数据 分析算法的差异

c cpp 并行计算筛选过滤 裁决文书网1985-2021 的300g数据 数据 数据解压以后大概300g&#xff0c;最开始是使用python代码进行计算&#xff0c;但是python实在太慢了&#xff0c;加上多进程也不行&#xff0c; 于是 使用c 进行 计算 c这块最开始使用的是 i7-9700h 用的是单线…

【翻译】Elasticsearch-索引模块

索引块限制对指定的索引的可用的操作类型&#xff08;就是指对该索引能进行什么操作&#xff09;。这些块有不同的风格&#xff0c;可以阻止写、读或元数据操作。块可以通过动态索引设置来设置/移除&#xff0c;也可以通过专用API添加&#xff0c;这也可以确保写入块一旦成功返…

基于Spring Boot的心灵治愈交流平台设计与实现

基于Spring Boot的心灵治愈交流平台设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 系统功能界面图&#xff0c;在系统首页可以查看首页…

餐饮店油烟净化器多久清洗一次?保持厨房健康卫生

我最近分析了餐饮市场的油烟净化器等产品报告&#xff0c;解决了餐饮业厨房油腻的难题&#xff0c;更加方便了在餐饮业和商业场所有需求的小伙伴们。 在餐饮店中&#xff0c;油烟净化器的清洗频率是确保厨房环境清洁的关键之一。那么&#xff0c;油烟净化器多久清洗一次才合适…