详解让人闹心的C++语句 cout<<“Hello“<<endl;
语句“cout<<"Hello!"<<endl;“的作用是输出字符串Hello和换行符到屏幕,下面详解这句话!
cout是标准库iostream中的定义好的一个对象(如果你不知道啥叫对象,请参考C++的相关书籍,我这里给大家提供一本我认为比较好的C++学习书籍:PDF电子档链接:百度网盘 请输入提取码 密码:xawx),这个cout对象用于将字符数字等显示到屏幕上。cout与<<配合使用就能将字符数字等显示到屏幕上。
那么为cout与<<为啥能这样配合呢?下面就对这个问题解释~
我们不去探究具体的实现过程,我们只从编译器对“cout<<”的认识角度去说明这个问题!在认识这个问题前我们首先看下我们的C++编译器对“+”是怎么实现的?
在C++中的任何运算都是通过函数来实现的,比如说,1+2,编译器会自动将这个表达式解释为:operator+(1,2);
接着再找一下有没有以operator+(int,int)为原型的函数,由于c++已经定义了一个这样的函数,因此会自动调用该函数,然后再将1和2当参数传递进去。同样如果执行浮点数的加法运算4.5+5.6,则也是调用该函数operator+(4.5,5.6);,只是传递的参数类型不同,因而通过重载函数实现了整型和浮点型的参数传递。【PS:如果你不知道什么叫重载函数,可以参看文章:C++函数重载详解_C语言中文网,函数重载可是c++的一个非常重要的基础,不懂这个完全没法看懂好的c++代码】
同理,对于++运算符,比如++i,系统会自动调用operator++(),参数就是i;在C++中由于多了个对象的念,为了便于大家对程序的书写,所以规定,对象名的前面和后面跟一个操作符等于“对象.操作符”,如果a是一个对象,那么a++或++a等价于a.++再等价于a.operator++(),即相当于调用了a对象中的一个方法函数opeartor++()。再同理,cout<<"Hello!"等价于cout.operator<<( Hello!)。说到这里,大家肯定还是不明白语句“cout<<"Hello!"<<endl;”中“<<endl”为什么可以直接跟在cout<<"Hello!"的后面?
要说明这个问题,我们其实看下表达式1+2+3;就可以理解了,+3不是直接跟在1+2的后面么,而且这个表达示我们都用烂了,根本没啥问题。所以同理我们对于符号<<可以写出这样的形式1<<2<<3;,所以相同的形式有cout<<"Hello!"<<endl;这样就理解了这种写法了撒!这句话程序编译后运行的顺序时先运行cout<<"Hello!"{即cout.opeartor++( Hello!))},再运行cout<<endl{即cout.opeartor++( endl))}。既然说到这里了,那顺便说下endl是什么东东?它的作用就是“向缓冲区插入换行符号并刷新,将内容写入输出设备”!
至于cout.operator<<( Hello!)具体和cout.opeartor++( endl))是怎么样实现将字符显示到屏幕上的,我们就不用操心了,这就是人家给我们一个封装好的对象,就没必要考虑那么多了。
详解让人闹心的C++语句 cout<<“Hello“<<endl;相关推荐
- Oracle一张表写多个触发器,详解oracle中通过触发器记录每个语句影响总行数
详解oracle中通过触发器记录每个语句影响总行数 需求产生: 业务系统中,有一步"抽数"流程,就是把一些数据从其它服务器同步到本库的目标表.这个过程有可能 多人同时抽数,互相影响 ...
- 闹钟应用盘点: 闹人闹心应用 总有一款适合你
随着智能手机的出现,各式各样的闹钟应用层出不穷,很多人已经不再局限于手机里自带的单调呆板的闹钟功能,转而寻求各种风格各异的闹钟应用来催自己起床.一日之计在于晨,有多少人早上喜欢睡懒觉而必须要闹钟给你叫 ...
- 如何获取如何获取datagrid复选框的值_火影忍者博人传木叶丸获取方法详解 博人传木叶丸如何获取...
火影忍者手游博人传木叶丸如何获取,相信很多玩家都不是很了解,那么具体的获取方法是什么呢,同时技能强度如何呢,下面小编给大家带来了详细的攻略内容,一起来看看吧. 火影忍者手游博人传木叶丸获取方法 距离策 ...
- 详解~前端人需要了解的DevOps
点击上方关注 前端技术江湖,一起学习,天天进步 你知道的越多,不知道的就越多,业余的像一棵小草! 成功路上并不拥挤,因为坚持的人不多. DevOps 日渐成为研发人员耳熟能详的一个组合词,但什么是 D ...
- 老鼠出迷宫详解(人人能搞懂)
常见问题: 小伙伴们在第一次遇到该问题时,思路大家都能清楚,就是遇到走不通的时候就换方向走,但是却不知道代码是如何走的. 解决问题: 代码如下: public static void main(Str ...
- 史上最简单MySQL教程详解(基础篇)之SQL语句以及预留关键字介绍
SQL简单介绍 数据操作语句 (Data Manipulation Language,DML) 数据定义语句 (Data Definition Language ,DDL) 数据控制语句 (Data ...
- 详解MySQL的逻辑架构和SQL语句执行流程
文章目录 1. 逻辑架构 1.1 连接层 1.2 服务层 1.3 引擎层 1.3.1 InnoDB 存储引擎 1.3.2 MyISAM 存储引擎 1.3.3 其他存储引擎 1.4 存储层 3. SQL ...
- 详解大中小数据常用数据库的SQL语句、函数以及常见优化
本篇文章主要介绍目前我在目前项目中使用过的一些数据库的用法,像中小型数据常用的关系型数据库Sql Server,大数据常用的数据库Hive,Hbase. 文章目录 SQL 你必须知道的 SQL网站 关 ...
- 远心光学成像系统原理详解
目录 1 预备知识 1.1 光阑的概念 1.2 孔径光阑.入射光瞳.出射光瞳 1.3 主光线 1.4 光学系统的景深 1.5 远心光学系统 2 远心镜头详解 2.1 远心镜头分类 2.2 远心镜头的特 ...
最新文章
- 易邮邮箱服务器的安装和配置
- 爱国者首款手机正式上市 零售价不超2000元
- 大学中计算机考查课不及格怎么办,大学体测不及格怎么办 有哪些补救方法
- [leetcode] 935 Knight Dialer 骑士拨号器
- UML之独孤九剑总纲
- GNSS/INS组合导航(1)-- 姿态矩阵
- ADF 入门教程(1)
- 【图论训练】天气晴朗的魔法【最小生成树】
- A beginning Flags
- SAP 如何在选择画面中显示图片 <转载> cl_gui_docking_container
- vue 获取当年当前季度
- Detail information about Withholding Tax in SAP
- 计算机二级mysql考试经验分享(2021年3月)
- 大数据的后台分析模式
- 2023年美赛完整介绍
- SQL 语句如何保留两位小数
- Linux kernel可设置参数说明(sysctl.conf)
- 软件测试用例设计方法-因果图法
- Java——final关键字,String为什么不可变
- 风火全区维护结束 商城第一版新春上线
热门文章
- 用python画花瓣-Python教程:使用Turtles画出带有花瓣的花
- python装饰器函数-python函数装饰器
- python3.6安装opencv-python3.6.5安装opencv3
- 怎样学好python-零基础如何学好Python?
- python编程难吗-Python、C+这些编程语言难吗?十岁女孩告诉你答案
- python语言程序设计梁勇-Python语言程序设计(美-梁勇)第1章习题解答
- python导入txt文件并绘图-Python实现读取txt文件并画三维图简单代码示例
- python降级-关于卸载:如何从Python 3.2降级到2.7?
- 用PIL读取保存图片错误 :OSError: cannot write mode RGBA as JPEG
- LA4238 Area of Polycubes(立方体的表面积)