当前位置: 首页 > ai >正文

C++:流插入、流提取操作符

流插入和流提取操作符是两个我们常用的操作符。对于内置类型我们可以很方便的使用,不过对于自定义类型,要想这两个操作符的结果符合我们的预期,则需要我们自己根据自定义类型来重载这两个操作符。

1.流插入操作符:

我们根据标准库里的实现来,可以知道返回值和参数都是一样的ostream的对象

//假设我们已经实现了date类
class date
{public:operator <<(ostream& out){out<<_year<<"/"<<_month<<"/"<<_day;}
};

不过我们这样实现了依旧调不动

date d1;
cout<<d1;

因为顺序有问题,我们实现的是成员函数,它的第一个操作数默认是this指针,所以需要调换一下使用顺序,不过感觉挺不方便的。

date d1;
d1<<cout;

因为不符合我们的使用逻辑。所以,下一步需要把使用顺序调换过来,那样就不能使用成员函数了,只能定义成公有函数,但是我们仍然需要使用成员变量,于是我们需要用到一个关键字——friend。

//假设我们已经实现了date类
class date
{friend ostream& operator <<(ostream& out,date d1);public:};
ostream& operator <<(ostream& out,date d1){out<<_year<<"/"<<_month<<"/"<<_day;}

这个就是友元声明,友元声明之后,外部的函数或者类就可以访问类里面的所有成员了。关于友元,在该专栏的另一篇文章有更详细的介绍。C++:友元-CSDN博客

注意,函数的返回值也得是ostream的对象,否则

date d1,d2;
cout<<d1<<d2;

以上的情况就无法应对。

同时流插入需要注意是否需要const版本。

2.流提取:

与流插入相似,不过没有const版本。

流插入和流提取都是以空格作为分隔

http://www.xdnf.cn/news/5418.html

相关文章:

  • Java volatile关键字深度解析与源码实现
  • 极新携手火山引擎,共探AI时代生态共建的破局点与增长引擎
  • 解锁c++模板:从入门到精通
  • vue 中的数据代理
  • go-gin
  • 多模态大语言模型arxiv论文略读(六十九)
  • 【C语言指针超详解(四)】--字符指针变量,数组指针变量,二维数组传参的本质,函数指针变量,函数指针数组,转移表
  • .NET MAUI 基础知识
  • 6.空气质量检测和语音播报
  • Nginx 源码安装成服务
  • Python与矢量网络分析仪3671E:自动化测试(Vscode)
  • 基于PySyft与TensorFlow的医疗数据协同分析系统实现教程
  • 红黑树的线程安全的做法
  • 黑名单中的随机数-leetcode710
  • sunset:Solstice靶场
  • 动态规划之背包问题总结(Java)
  • 微服务架构-限流、熔断:Alibaba Sentinel入门
  • TIME - MoE 模型代码 4——Time-MoE-main/run_eval.py
  • 前端密码加密:保护用户数据的第一道防线
  • 《微服务设计》笔记
  • CSS:盒子阴影与渐变完全解析:从基础语法到创意应用
  • MySQL数据库容灾设计案例与SQL实现
  • 数据库的脱敏策略
  • 深入浅出之STL源码分析6_模版编译问题
  • 【Tools】git使用详解以及遇到问题汇总
  • 传感器:从单一感知到智能决策的跨越
  • Java基础(异常2)
  • MCP:重塑AI交互的通用协议,成为智能应用的基础设施
  • 【js基础笔记] - 包含es6 类的使用
  • C++(9):位运算符进阶版