C cout endl

cout是标准库iostream中的定义好的一个对象(如果你不知道啥叫对象,请参考C++的相关书籍,我这里给大家提供一本我认为比较好的C++学习书籍:PDF电子档链接:http://pan.baidu.com/s/1jHx88dg 密码: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:如果你不知道什么叫重载函数,可以参看文章:http://c.biancheng.net/cpp/biancheng/view/35.html,函数重载可是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))是怎么样实现将字符显示到屏幕上的,我们就不用操心了,这就是人家给我们一个封装好的对象,就没必要考虑那么多了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章