gpt4 book ai didi

c++ - 这里左手操作数cout是怎么传递的呢?

转载 作者:太空狗 更新时间:2023-10-29 19:49:06 26 4
gpt4 key购买 nike

#include <iostream>
#include <iomanip>
using namespace std;

ostream & currency(ostream & output)
{
output << "RS ";
return output;
}

int main()
{
cout << currency << 7864.5;
return 0;
}

输出:

 RS 7864.5

我不明白这似乎是如何工作的,即只是函数 currency 的名称用于调用函数。这不应该像 currency(cout) 但使用它会给出输出。

 RS 1054DBCC7864.5

最佳答案

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

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&));
};

也就是说,currency 作为函数指针传递,该函数指针以流作为参数调用。

关于c++ - 这里左手操作数cout是怎么传递的呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13441858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com