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

c++重载和

在重载输出输入运算符的时候,只能采用全局函数的方式(因为我们不能在ostream和istream类中编写成员函数),这里才是友元函数真正的应用场景。对于输出运算符,主要负责打印对象的内容而非控制格式,输出运算符不应该打印换行符;对于输入运算符,必须处理可能失败的情况(通常处理输入失败为默认构造函数的形式),而输出运算符不需要。

 1 #include<iostream>
 2 using namespace std;
 3 class Test {
 4     friend ostream & operator<<(ostream &out, Test &obj);
 5     friend istream & operator >> (istream &in, Test &obj);
 6 public:
 7     Test(int a = 0, int b = 0)
 8     {
 9         this->a = a;
10         this->b = b;
11     }
12     void display()
13     {
14         cout << "a:" << a << " b:" << b << endl;
15     }
16 public:
17 
18 
19 private:
20     int a;
21     int b;
22 };
23 ostream & operator<<(ostream &out, Test &obj)
24 {
25     out << obj.a << " " << obj.b;
26     return out;
27 }
28 istream & operator>>(istream &in, Test &obj)
29 {
30     in >> obj.a>> obj.b;
31     if (!in)
32     {
33         obj = Test();
34     }
35     return in;
36 }
37 int main()
38 {
39     Test t1(1, 2);
40     cout << t1 << endl;
41     cout << "请输入两个int属性:";
42     cin >> t1;
43     cout << t1 << endl;;
44     cout << "hello world!\n";
45     return 0;
46 }

输入正确时输入错误时

 

相关文章:

  • 为什么文件名要小写?
  • 设计模式之——抽象工厂模式
  • 第八十课、多线程中的信号与槽(下)------------------狄泰软件学院
  • Eclipse在线安装hibernate tools插件
  • Laravel 实践之路: 数据库迁移与数据填充
  • Git与TortoiseGit基本操作
  • CHIL-ORACLE-创建非空约束
  • JavaScript思维导图之字符串函数
  • JS实现OO机制
  • Sql Server数据批量更新
  • Linux usb子系统(一) _写一个usb鼠标驱动
  • SylixOS iMX6平台I2C总线驱动
  • HTML初学者常用标签及属性
  • jquery特效 商品SKU属性规格选择实时联动
  • centos
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • echarts的各种常用效果展示
  • Java的Interrupt与线程中断
  • JAVA多线程机制解析-volatilesynchronized
  • Laravel5.4 Queues队列学习
  • Ruby 2.x 源代码分析:扩展 概述
  • Shell编程
  • spring-boot List转Page
  • SpringBoot几种定时任务的实现方式
  • Travix是如何部署应用程序到Kubernetes上的
  • Vue2 SSR 的优化之旅
  • 仿天猫超市收藏抛物线动画工具库
  • 工作手记之html2canvas使用概述
  • 基于HAProxy的高性能缓存服务器nuster
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 排序算法之--选择排序
  • 树莓派 - 使用须知
  • 微服务核心架构梳理
  • 详解移动APP与web APP的区别
  • 找一份好的前端工作,起点很重要
  • puppet连载22:define用法
  • scrapy中间件源码分析及常用中间件大全
  • 阿里云API、SDK和CLI应用实践方案
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • !$boo在php中什么意思,php前戏
  • # Panda3d 碰撞检测系统介绍
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (day6) 319. 灯泡开关
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (离散数学)逻辑连接词
  • (利用IDEA+Maven)定制属于自己的jar包
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (四)linux文件内容查看
  • (转)JAVA中的堆栈
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET Standard 支持的 .NET Framework 和 .NET Core