C++左移运算符重载

通过重载使得左移运算符可以输出自定义数据类型。

在类中定义成员函数实现不了左移运算符重载。

要在全局函数中实现左移运算符重载。

注:左移运算符的类型是ostream

  • 过程如下:
//新建person类
class Person {public:Person(int a, int b)//用于输出值{this->m_A = a;this->m_B = b;}
private:int m_A;int m_B;
  1. 定义全局重载函数,输出person类中的值
    此种结构只能在左移运算符后输出一个值
    cout<<p;
//对于不清楚类型的返回值可以先设置成为void,
//等到定义完毕后系统将会自动提示其返回值类型
void operator<<(ostream& cout, Person& p) {cout << "a:" << p.m_A << " b:" << p.m_B;}
//此时还无法调用,必须进行下一步声明为友元函数
  1. 声明为友元
   friend void operator<<(ostream& cout, Person& p);
  • 如何能够像以前的输出形式一样,实现连续输出呢?

我们可以更改一下重载函数,使其能够链式输出
cout<<p<<endl;

  1. 定义重载函数
//返回值必须为ostream&类型
//形参的名字无所谓,不用必须是cout
ostream& operator<<(ostream& out, Person& p) {out << "a:" << p.m_A << " b:" << p.m_B;return out;}
  1. 声明为友元
 friend ostream& operator<<(ostream& out, Person& p);

C++左移运算符重载相关推荐

  1. 运算符重载——左移运算符重载

    目录: 运算符重载--算术运算符重载 运算符重载--递增运算符重载 运算符重载--左移运算符重载 运算符重载--赋值运算符重载 应用场景: 可以输出自定义的数据类型信息 Person p(" ...

  2. 4.2左移运算符重载

    左移运算符重载: 直接输出p是不行的,我们需要重载<< 注意,一般不会通过成员函数来重载左移运算符,因为那个样子cout就在<<的左侧了. 所以我们使用全局函数重载<&l ...

  3. 左移运算符重载(C++)

    左移运算符重载 视频链接 作用:可以输出自定义数据类型 我们正常情况下无法输出自定义数据类型.这个时候就需要重载<<运算符 注意,通常不会用成员函数重载<<运算符,因为无法实现 ...

  4. C++类与对象笔记十二:运算符重载二:左移运算符重载

    左移运算符重载:可以打印输出自定义数据类型. 为了输出重载,我们先看看现有的输出函数.输出类型为std下的ostream类型的引用. 标准输出流(全局只能有一个). 返回值类型为ostream,函数名 ...

  5. 【C++】有关<左移运算符重载>的总结

    大家好,我是翼同学! 目录 1️⃣前言 2️⃣左移运算符重载 4️⃣需注意的点 5️⃣写在最后 1️⃣前言 今天的笔记内容是: 左移运算符的重载 在类中,我们可以编写类的各种属性. 而左移运算符的重载 ...

  6. 运算符重载之左移运算符重载

    左移运算符重载 #include<iostream> using namespace std; class wood {friend ostream& operator<&l ...

  7. C++_类和对象_C++运算符重载_左移运算符重载_链式编程_实现直接打印对象---C++语言工作笔记056

    然后我们再去看左移运算符,实际上就是那个<< 小于号 为什么要重载他呢?因为我们想实现一个功能,比如我仅仅是cout << p 就可以打印这个对象,现在肯定是不行对吧. 我们用 ...

  8. C++学习之左移运算符重载

    在C++里,cout 后边加上<< 便可以输出数据,但是输出的只是一些变量,我现在想输出一个对象,所以需要重载一下<<. 例如我创建了一个class person{ }; pe ...

  9. c++中运算符重载(加号运算,左移运算,前置后置++运算符,赋值运算,关系运算,函数运算)

    运算符重载注意 重载的运算符要易读 内置的数据类型的表达式的运算符是不可以改变的 不要重载&& 和 | | 运算符 =,[]和->运算符只能通过成员函数进行重载 << ...

最新文章

  1. css--calc()函数
  2. 大数据对六大领域的挑战
  3. 项目部署—Linux命令安装redis
  4. python具有可扩展的特性_Python的特点
  5. 《Effective C++》:条款46-条款47
  6. bzoj1046 [HAOI2007]上升序列
  7. redis 辅助工具包 - redis-aux
  8. arduino 步进电机驱动库_arduino中驱动 步进电机
  9. 推荐系统之隐语义模型(LFM)及Python实现
  10. ISP模块之色彩增强算法--HSV空间Saturation通道调整
  11. 因为相信所以看见,既然看见注定坚信《12》
  12. 个人博客配置SSL安全文件
  13. Linux下套接字详解(五)----基于fork多进程的TCP套接字(阻塞/同步/并发)
  14. 白话空间统计十九:热点分析(上)
  15. 支付宝被罚18万元;金立副总裁回应60亿广告费;苹果再遭专利诉讼丨价值早报
  16. java最简单的kafka生产者和消费者,未结合spring
  17. 基于MATLAB的数论运算与编写函数(附完整代码)
  18. getFieldDecorator will override value
  19. 21 世纪什么最贵?那必须得是“人才”啊,一本书带你读懂 TCP-IP 协议
  20. 【08月28日】A股滚动市盈率PE历史新低排名

热门文章

  1. 【Java小项目】图片浏览器
  2. pixar动画短片集
  3. 我爱你用计算机二进制怎么表示,520用数学公式怎么表达
  4. 后终端时代的移动开发
  5. 会声会影X9快进和慢动作效果如何制作及2020版下载
  6. 上海交大计算机专业英语课本,学术英语 上海交通大学
  7. 安卓手机硬改软件介绍。改机软件 改手机参数
  8. Flutter Engine源码粗看
  9. STM32安装教程和J-link烧录驱动安装教程【第二天】
  10. 新品I阿路比科技百元级高性价比小型轻量姿态传感器LPMS-SI1