C++中,有一种对象叫操控器(manipulators),专门用来操控stream的对象,在C++标准中,预定义好几种操控器,常见的有:

flush   刷新output缓冲区,将内容写入输出设备

endl    向缓冲区插入换行符号并刷新,将内容写入输出设备

ends    向缓冲区插入字符串终止符号,通常是'\0'

ws      读取时忽略空

以endl为例进行说明:

可见endl实际上是一个已经已经定义好的全局的模版函数,它的形式可以简单的认为是

ostream& endl(ostream& strm)

在ostream类中,有一种输出重载方式如下:

ostream& ostream::operator<<(ostream& (*op)(ostream&))
{
return (*op)(*this);
}

这个重载函数的参数是一个函数指针,而且该函数的形式正好是上面已经预定义好的操控器endl,因此,当出现cout<<endl时,实际上就是调用了这个重载函数。

结论:endl是C++中的操控器,实质上是一个函数指针。

参考:cout<<endl 本质解析

最新文章

  1. 简易版自定义BaseServlet
  2. Chrome开发者工具详解
  3. 第四章 Python外壳:代码结构
  4. Java Synchronized Blocks vs. Methods
  5. xfire调用webservice接口的实现方式
  6. Linux 中改变主机名的 4 种方法
  7. MySQL+MGR 单主模式和多主模式的集群环境 - 部署手册 (Centos7.5)
  8. ibatis项目启动报错The string &quot;--&quot; is not permitted within comments【原】
  9. webpack(import路径配置)(自动打开浏览器)(自定义运行命令)
  10. DFS例题
  11. Keras学习率调整
  12. 如何解决每次打开office 都会出现正在配置的问题
  13. sublime text 3中文乱码问题解决的方法
  14. Phpcms V9单页添加自定义字段
  15. IO—代码—基础及其用例
  16. To set Nginx Upload Size For &ldquo;413&ndash;Request Entity Too Large&rdquo; Error
  17. Windows App开发之应用布局与基本导航
  18. PCI学习之总线原理01
  19. 20145204《java程序设计》课程总结
  20. 用with来打开文本文件

热门文章

  1. Windows10环境下loadrunner11 安装
  2. [Flutter] 一些面试可能会问基础知识
  3. !!! jquery mobile常用代码
  4. jpa 一对多and 多对一
  5. XE 创建 Active Form
  6. 学习写了一个点击按钮倒计时的jquery小插件
  7. Linux SWAP 交换分区配置说明(转)
  8. http get 方式参数的长度限制&lt;转&gt;
  9. CStatic控件SS_NOTIFY属性
  10. map模块使用方法