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