之前一篇写的有些潦草。
现在来详细介绍一下左移运算符重载。

首先我们要清楚cout是一个ostream对象,能够识别C++中所有的基本数据类型。

为什么使用友元函数?
正常情况下是这样显示的,第一个是ostream的类对象cout

std::cout << Person;

如果使用一个Person成员函数来重载<<,Person将是第一个操作数,就像使用成员函数重载*运算符那样,就会变成这样
,看着很别扭,故使用ostream为第一个操作数

Person << std::cout;

返回值为ostream类对象?

int x = 1;
double y = 2;
std::cout << x << y;

C++从左到右读取输出语句

(std::cout << x) << y;

正如<<运算符要求左边是一个ostream对象。然而,因为表达式cout<< x位于y的左侧,所以输出语句也是一个ostream对象。因此,表达式(cout << x)本身就是ostream对象cout,从而可以位于<<运算符的左侧

ostream& operator(ostream& os, const Person& p) {os << p.name << p.age;return os;
}

也就是说,下面的语句

cout << Person;

将被转换成下面的语句

operator << (cout , Person);

C++左移<<运算符详解相关推荐

  1. mysql所支持的比较运算符_mysql比较运算符有哪些?Mysql比较运算符详解

    比较运算符可用于比较数字和字符串.今天发一篇Mysql比较运算符详解,希望对初学者有所帮助,虽然现在流行NoSQL,但是MYSQL还是很有用的,数字作为浮点值进行比较,字符串以不区为例进行比较,=运算 ...

  2. C++移位运算符详解

    C++移位运算符详解 移位运算符包括左移"<<"和右移">>" 左移运算符<<: 1.无符号 语法格式:需要移位的数字< ...

  3. Java 位运算符详解

    文章目录 Java 位运算符详解 前情提要: 一.简介 二.如何区分 &,|,^ 是逻辑运算符还是位运算符? 三.例子 按位与 & 按位或 | 按位异或 ^ 按位取反 ~ 左移 < ...

  4. python3运算符和表达式实验报告_对Python3 * 和 ** 运算符详解

    在 Python 中,* 和 ** 具有语法多义性,具体来说是有四类用法. 1. 算数运算 * 代表乘法 ** 代表乘方 >>> 2 * 5 10 >>> 2 ** ...

  5. JavaScript学习总结(四)——逻辑OR运算符详解

    转载自   JavaScript学习总结(四)--逻辑OR运算符详解 在JavaScript中,逻辑OR运算符用||表示 var bTrue = true;var bFalse = false;var ...

  6. java 实现按规则自增功能_java运算符详解 - osc_74vaali6的个人空间 - OSCHINA - 中文开源技术交流社区...

    java基础(2)--运算符详解 自增自减规则 自增自减就是常用的 a = a++ 或者 a = ++a;前者是后缀式,先把a赋值给a,再加一:后者是后缀式,先加一,在赋值给a;而且a++,++a并不 ...

  7. 解释一下java的短路运算,Java短路运算符和非短路运算符详解

    Java短路运算符和非短路运算符详解 时间:2017-09-15     来源:互联网 你了解Java短路运算符和非短路运算符吗?短路运算符就是我们常用的"&&". ...

  8. MySQL—运算符详解(算术、比较、逻辑、范围运算符与集合运算符 模糊查询 NULL值运算与null值判断 位运算符)

    MySQL--运算符详解 知识纲要 算术运算符 比较运算符 逻辑运算符 范围运算符与集合运算符 模糊查询 NULL值运算与null值判断 位运算符 1.算术运算符 加 减 乘 除 取余 div 也表示 ...

  9. C语言学习——运算符详解

    C语言学习--运算符详解 一.学习运算符 (1)运算对象的数目 C语言中,运算符的运算对象可以是一个,称单目运算符:运算对象也可以是两个,称双目运算符:运算对象还可以是三个,称三目运算符. (2)运算 ...

  10. JS运算符详解与优先级

    JS运算符详解与优先级 算术运算符 赋值运算符 一元运算符 比较运算符 逻辑运算符 运算符优先级 算术运算符 + 求和 - 求差 * 求积 / 求商 % 求余 取模 乘除取余优先级相同,加减优先级相同 ...

最新文章

  1. 构建node.js基础镜像_在Android上构建Node.js应用程序
  2. PermutationImportance
  3. mysql主从复制延时性问题_MySQL主从同步延迟原因及解决办法
  4. 持币过节也能让钱生钱
  5. 精品素材 – 24款扁平风格 PSD 格式图标免费下载
  6. c语言 静态断言,C断言/静态断言
  7. HTML如何修改乱码,html网页乱码怎么修改
  8. 偏微分方程数值求解 -- ING
  9. SpringBoot电影网站源码(含数据库)
  10. #创新应用#豆果美食:贴心的美食专家!
  11. 为什么Julia如此受欢迎?
  12. 腾讯云短信发送php
  13. 【JZOJ A组】排列
  14. 吴恩达 tensorflow
  15. Nexus 搭建docker本地仓库(hosted)和私有仓库(proxy)
  16. 易基因 | 常用的6种DNA甲基化测序方法,你知道几个?
  17. 思岚科技荣获CSDN 【2019优秀人工智能案例TOP 30+】
  18. 【cartographer without ros】四、里程计odom数据转换
  19. python电子病历交接班系统_电子病历系统开发经验共享,大家共勉!
  20. 时隔3年,再次折腾BlackBerry 8830!

热门文章

  1. nz-tree的右键菜单的实现, 以及选中状态的实现
  2. ROS教程(二):创建工作空间(图文)
  3. 来自Facebook的KTLS Kernel SSL/TLS 原理和实例
  4. 英语学习笔记——发音篇
  5. 赛门铁克通配符SSL证书,一张通配型证书实现全站加密
  6. 如何看待中科院合肥研究院 90 多名科研人员集体辞职?
  7. 为什么我不建议你去外包公司?
  8. 华为BOX300连线及配置
  9. 树与图在索引上的区别
  10. 市场营销行业拓客的10个经典方法