如何操作<&书信电报;使用操纵器功能 C++中有可能编写这样的代码: cout << std::endl; cout

如何操作<&书信电报;使用操纵器功能 C++中有可能编写这样的代码: cout << std::endl; cout,c++,stl,C++,Stl,这没有什么特别之处。只是重载以接受输入中的各种类型 对于操纵器函数,运算符和运算符提供重载 预解码istream&operator>(标准::ios_base&(*func)(标准::ios_base&)); basic_istream&operator>>(std::basic_ios&(*func)(std::basic_ios&)); basic_istream&operator>>(basic_istream&(*func)(basic_istream&)); 基本的团队和运营商你当然可

这没有什么特别之处。只是重载以接受输入中的各种类型

对于操纵器函数,
运算符
结构填充{CharT ch;};
模板<类图>
填充设置填充(图c)
{
返回填充{c};
}
模板<类图>

basic_ostream&operator这里没有什么特别的事情
std::istream
std::ostream
分别以/p的形式为
运算符>
运算符
提供重载 预解码istream&operator>(标准::ios_base&(*func)(标准::ios_base&)); basic_istream&operator>>(std::basic_ios&(*func)(std::basic_ios&)); basic_istream&operator>>(basic_istream&(*func)(basic_istream&)); 基本的团队和运营商你当然可以

#include <iostream>

struct Foo
{
   int f = 0;
};

Foo operator+(Foo foo, int (*function)())
{
   return {foo.f + function()};
}

int one()
{
   return 1;
}

int main(int argc, const char* argv[])
{
   Foo foo {10};
   std::cout << (foo+one).f << std::endl;
}

你确定是这样的吗?我希望
cout::operator@MakrRansom它是被调用的,但是
std::endl
本身就是一个函数模板警告:一旦你开始操作重载,你可能会发现自己过度沉溺于其中,到处都在使用它们。虽然你可能觉得他们很有趣,但你的同事可能认为你疯了。在这条路径的底部,你会发现类似的东西——非常酷,是的,但不是我所说的习惯性C++。
cout << std::endl;
#include <iostream>

struct Foo
{
   int f = 0;
};

Foo operator+(Foo foo, int (*function)())
{
   return {foo.f + function()};
}

int one()
{
   return 1;
}

int main(int argc, const char* argv[])
{
   Foo foo {10};
   std::cout << (foo+one).f << std::endl;
}