【C++】class的设计与使用(十)重载iostream运算符

news/2024/10/18 18:29:22/

希望对某个类对象进行读写操作,直接cout<<类对象<<endl;cin>>类对象;编译器会报错,所以我们必须提供一份重载的input/output运算符:

重载ostream运算符

ostream& operator<<(ostream &os, const Triangular &rhs)
{os<<"("<<rhs.beg_pos()<<","<<rhs.legnth()<<")";rhs.display(rhs.length(),rhs.beg_pos(),os);return os;//传入重载运算符函数的ostream对象又被原封不动地返回
}//给定对象
Triangular tri(6,3);cout<<tri<<endl;
//输出结果:(3,6) 6 10 15 21 28 36
  • ostream对象未声明为const,是因为每一次输出都会更改ostream对象的内部状态,rhs这种被输出的对象就会被声明为const。
  • 我们使用了&传址的方式,是基于效率考虑而非为了修改其对象内容。

重载istream运算符

istream& operator>>(istream &is,Triangular &rhs)
{char ch1,ch2; int bp,len;//假设输入为(3,6) 6 10 15 21 28 36//那么ch1=='(',bp==3,ch2==',',len==6。is>>ch1>>bp>>ch2>>len;//设定rhs的三个数据成员rhs.beg_pos(bp);rhs.length(len);rhs.next_reset();return is;
}

一般而言,input运算符的实现比较复杂。因为读入的数据可能有问腿。


http://www.ppmy.cn/news/1131965.html

相关文章

枚举,进制转换,char*,补码,算法,链表,位运算,NULL的含义

什么是枚举 进制转换 4个二进制位组合才能有16个状态 字符指针 补码 编码就是解决这个东西到底用哪个二进制表示 不够位数指的是比如32位&#xff0c;前面都补1 #include <iostream> #include <map> #include <vector> #include <algorithm> using na…

CSS box-shadow阴影

1、语法 box-shadow: h-shadow v-shadow blur spread color inset; 值描述h-shadow必需的。水平阴影的位置。允许负值v-shadow必需的。垂直阴影的位置。允许负值blur可选。模糊距离spread可选。阴影的大小color可选。阴影的颜色。在CSS颜色值寻找颜色值的完整列表inset可选。…

通过code2Session接口获取openId(上)

//导入request请求工具类 import {getBaseUrl,getWxLogin,getUserProfile,requestUtil} from ../../utils/requestUtil; import regeneratorRuntime from ../../lib/runtime/runtime; Page({/*** 页面的初始数据*/data: {address:{},baseUrl:,cart:[],totalPrice:0,totalNum:0}…

使用sqlmap获取数据步骤

文章目录 1.使用sqlmap获取所有数据库2.使用sqlmap获取当前连接数据库3.使用sqlmap获取当前数据库下所有表名4.使用sqlmap获取当前数据库下某个表下所有列名5.使用sqlmap获取当前数据库下某个表下指定字段的数据6.脱库命令 1.使用sqlmap获取所有数据库 –dbs python sqlmap.py…

【C语言】通讯录系统实现 (保姆级教程,附源码)

目录 1、通讯录系统介绍 2、代码分装 3、代码实现步骤 3.1、制作菜单menu函数以及游戏运行逻辑流程 3.2、封装人的信息PeoInfo以及通讯录Contact结构体类型 3.3、初始化通讯录InitContact函数 3.4、增加联系人AddContact函数 3.5、显示所有联系人ShowContact函数 3.6、…

ARM64平台jetson nano上安装PyQt5环境

一、前提需要安装python 嵌入式ARM64开发平台上&#xff0c;pip安装pyqt5 无法安装上&#xff0c;python安装过的可以略过这一步&#xff0c;我这安装的是python3.9 二、安装PyQt5以及SIP PyQt5版本需与SIP要对应 sip 4.19.25 下载 pyqt5 5.15.2 下载 1.源码编译需要依赖qm…

关于layui upload上传组件上传文件无反应的问题

最近使用layui upload组件时&#xff0c;碰到了上传文件无反应的问题&#xff0c;感到非常困惑。 因为使用layui upload组件不是一次两次了&#xff0c;之前每次都可以&#xff0c;这次使用同样的配方&#xff0c;同样的姿势&#xff0c;为什么就不行了呢&#xff1f; 照例先…

分享10个必备的VS Code技巧和窍门,提高你的开发效率

目录 前言 1. 时间线视图&#xff1a;本地源代码控制 2. 自动保存&#xff1a;不再需要按Ctrl S 3. 使用命令面板进行任何操作 4、快速转到文件 5. 快速跳转指定行 6. 快速删除该行 7. 享受使用流畅的光标进行打字 8. 快速格式化代码 9. 使用多光标编辑功能节省时间…