Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 左手操作数cout如何传递到这里?_C++ - Fatal编程技术网

C++ 左手操作数cout如何传递到这里?

C++ 左手操作数cout如何传递到这里?,c++,C++,我不明白这是怎么回事,也就是说只是函数名currency 用于调用函数。 这不是应该像currency(cout)一样,但是使用它可以提供输出 RS 7864.5 您的函数被视为ostream操纵器。函数currency()是一个操纵器:流类具有特殊的重载输出运算符,将具有特定sigunaure的函数作为参数。它们看起来像这样(省略了模板化): class std::ostream 公共std::ios{ 公众: // ... std::ostream&operator这起作用(问题中的代码

我不明白这是怎么回事,也就是说只是函数名
currency
用于调用函数。 这不是应该像
currency(cout)
一样,但是使用它可以提供输出

 RS 7864.5

您的函数被视为ostream操纵器。

函数
currency()
是一个操纵器:流类具有特殊的重载输出运算符,将具有特定sigunaure的函数作为参数。它们看起来像这样(省略了模板化):

class std::ostream
公共std::ios{
公众:
// ...
std::ostream&operator这起作用(问题中的代码):

std::cout
 RS 7864.5
 RS 1054DBCC7864.5
class std::ostream
    public std::ios {
public:
     // ...
     std::ostream& operator<< (std::ios_base& (*manip)(std::ios_base&));            
     std::ostream& operator<< (std::ios& (*manip)(std::ios&));         
     std::ostream& operator<< (std::ostream& (*manip)(std::ostream&));
};
std::cout << currency << 7864.5;
currency(std::cout) << 7864.5;
std::cout << currency(std::cout) << 7864.5;
ostream& retval = currency(std::cout); // prints "RS " as you expect
std::cout << retval; // oops, this is cout << cout, which is meaningless
std::cout << 7864.5; // prints "7864.5"