有时,我们可能想建立自己的操纵算子,这是相当简单的。一个像 endl 这样的不带参数的操纵算子只是一个函数,这个函数把一个 ostream 引用作为它的参数。(引用是一种不同的参数传送方式,在第10章中讨论)对 endl 的声明是:ostream&; endl(ostream&;); 现在,当我们写:cout<;<;"howdy"<;<;endl; endl 产生函数的地址。这样,编译器问:“有能被我调用的把函数的地址作为它的参数的函数吗?”确实有一个这样的函数,是在 IOSTREAM.H 里预先定义的函数;它被称作“应用算子”。这个应用算子调用这个函数,把 ostream 对象作为一个参数传送给这个函数。不必知道应用算子怎样建立我们自己的操纵算子;我们只要知道应用算子存在就行了。

如果你对 C++ 中 iostream 头文件感兴趣,可以参考 详解iostream,它详细解释了这个头文件的功能和用法。

我们看看如何建立一个操纵算子,这个操纵算子叫 nl,它产生一个换行而不刷新这个流。想知道更多关于 endl\n 的区别吗?点击这里

当然,如果你对 iostreamiostream.h 的区别感到好奇,可以查看这篇文章:头文件iostream与iostream.h区别。它详细解释了这两个头文件的异同,确保你在使用时不再感到迷惑。

对于更深入的 C++ iostream 的实例讲解,可以参考这篇文章。这将帮助你更好地理解和运用 iostream 库。

这些资源不仅能帮助你更好地理解操纵算子的实现,还能带你深入探讨 C++ 中流操作的精妙之处!