old*_*ink 7 c++ iostream function
我是C++的新手,所以endl用于结束行
cout << "Hello" << endl;
Run Code Online (Sandbox Code Playgroud)
我在网上的研究告诉我这是一个功能,如果是这样的话,为什么我们可以在不使用"()"的情况下调用它?
我如何声明这样的函数,让我们假设我想创建一个函数,只要我每次请求输入时整理控制台
string ain()
{
return " : ?";
}
Run Code Online (Sandbox Code Playgroud)
现在不是每次都像这样使用它
cout << "Whats your name " << ain();
Run Code Online (Sandbox Code Playgroud)
我希望能够将它用作
cout << "Question " << ain;
Run Code Online (Sandbox Code Playgroud)
就像endl一样,我知道"()"并不多,而且这并没有真正做任何大的事情来节省大量的时间,但我基本上要求这个问题来弄清楚为什么endl可以做到这一点.
krz*_*zaq 11
根据cppreference endl是一个函数模板,具有以下原型:
template< class CharT, class Traits >
std::basic_ostream<CharT, Traits>& endl( std::basic_ostream<CharT, Traits>& os );
Run Code Online (Sandbox Code Playgroud)
std::ostream的operator<<超载调用它在看到它.
您可以自己定义类似的模板:
template< class CharT, class Traits >
std::basic_ostream<CharT, Traits>& foo( std::basic_ostream<CharT, Traits>& os )
{
return os << "foo!";
}
Run Code Online (Sandbox Code Playgroud)
现在,执行
cout << foo << endl;
Run Code Online (Sandbox Code Playgroud)
将打印foo!到标准输出.