endl 是什么类型的函数?我如何定义类似 endl 的东西?
What type of a function is endl? How do I define something like endl?
我是 C++ 新手,所以 endl 用于结束行,如
cout << "Hello" << endl;
我在网络上的研究告诉我这是一个函数,如果是的话,为什么我们可以在不使用“();”的情况下调用它
我该如何声明这样的函数,让我们假设我想创建一个函数,每次我要求输入时都会整理控制台
string ain()
{
return " : ?";
}
现在不必像这样每次都使用它
cout << "Whats your name " << ain();
我希望能够将其用作
cout << "Question " << ain;
就像 endl 一样,我知道“()”并不多,这并不能真正节省大量时间,但我问这个问题基本上是为了弄清楚为什么 endl 可以做到这一点.
根据 cppreference endl
是具有以下原型的函数模板:
template< class CharT, class Traits >
std::basic_ostream<CharT, Traits>& endl( std::basic_ostream<CharT, Traits>& os );
std::ostream
's operator<<
重载看到就调用
你可以自己定义一个类似的模板:
template< class CharT, class Traits >
std::basic_ostream<CharT, Traits>& foo( std::basic_ostream<CharT, Traits>& os )
{
return os << "foo!";
}
现在,正在执行
cout << foo << endl;
将打印 foo! 到标准输出。
std::ostream
有成员函数重载
std::ostream& operator<<(std::ostream& (*func)(std::ostream&));
这意味着您可以使用
std::cout << ain;
如果 ain
声明为:
std::ostream& ain(std::ostream& out);
它的实现类似于:
std::ostream& ain(std::ostream& out)
{
return (out << " : ?");
}
我是 C++ 新手,所以 endl 用于结束行,如
cout << "Hello" << endl;
我在网络上的研究告诉我这是一个函数,如果是的话,为什么我们可以在不使用“();”的情况下调用它
我该如何声明这样的函数,让我们假设我想创建一个函数,每次我要求输入时都会整理控制台
string ain()
{
return " : ?";
}
现在不必像这样每次都使用它
cout << "Whats your name " << ain();
我希望能够将其用作
cout << "Question " << ain;
就像 endl 一样,我知道“()”并不多,这并不能真正节省大量时间,但我问这个问题基本上是为了弄清楚为什么 endl 可以做到这一点.
根据 cppreference endl
是具有以下原型的函数模板:
template< class CharT, class Traits >
std::basic_ostream<CharT, Traits>& endl( std::basic_ostream<CharT, Traits>& os );
std::ostream
's operator<<
重载看到就调用
你可以自己定义一个类似的模板:
template< class CharT, class Traits >
std::basic_ostream<CharT, Traits>& foo( std::basic_ostream<CharT, Traits>& os )
{
return os << "foo!";
}
现在,正在执行
cout << foo << endl;
将打印 foo! 到标准输出。
std::ostream
有成员函数重载
std::ostream& operator<<(std::ostream& (*func)(std::ostream&));
这意味着您可以使用
std::cout << ain;
如果 ain
声明为:
std::ostream& ain(std::ostream& out);
它的实现类似于:
std::ostream& ain(std::ostream& out)
{
return (out << " : ?");
}