c++高手,cout<<endl;重载的是什么?(在线)
“cout<<对象”,里面的<<是重载ostream的对象cout里面的函数,可是怎么cout<<endl;就有点奇怪了,endl是个函数,书上说可以写成endl(cou...
“cout<<对象”,里面的<<是重载ostream的对象cout里面的函数,可是怎么cout<<endl;就有点奇怪了,endl是个函数,书上说可以写成endl(cout);
怎么变成“cout<<函数”这是怎么重载的? 展开
怎么变成“cout<<函数”这是怎么重载的? 展开
3个回答
展开全部
cout是一个ostream,ostream里面重载了<<操作符,其中一个是:
_Myt& __CLR_OR_THIS_CALL operator<<(_Myt& (__cdecl *_Pfn)(_Myt&))
{ // call basic_ostream manipulator
_DEBUG_POINTER(_Pfn);
return ((*_Pfn)(*this));
}
参数为一个函数指针,_Myt是一个类型定义,等价于basic_ostream<_Elem, _Traits>,而endl函数为:
template<class _Elem,
class _Traits> inline
basic_ostream<_Elem, _Traits>&
__CLRCALL_OR_CDECL endl(basic_ostream<_Elem, _Traits>& _Ostr)
{
...
}
所以cout<<endl的时候就通过函数指针调用了endl函数,同时将cout作为参数传入,调用的实际上就是endl(cout)。
代码是VS 2005里面的
_Myt& __CLR_OR_THIS_CALL operator<<(_Myt& (__cdecl *_Pfn)(_Myt&))
{ // call basic_ostream manipulator
_DEBUG_POINTER(_Pfn);
return ((*_Pfn)(*this));
}
参数为一个函数指针,_Myt是一个类型定义,等价于basic_ostream<_Elem, _Traits>,而endl函数为:
template<class _Elem,
class _Traits> inline
basic_ostream<_Elem, _Traits>&
__CLRCALL_OR_CDECL endl(basic_ostream<_Elem, _Traits>& _Ostr)
{
...
}
所以cout<<endl的时候就通过函数指针调用了endl函数,同时将cout作为参数传入,调用的实际上就是endl(cout)。
代码是VS 2005里面的
展开全部
cout是一个ostream,ostream里面重载了<<操作符,其中一个是:
_Myt& __CLR_OR_THIS_CALL operator<<(_Myt& (__cdecl *_Pfn)(_Myt&))
{ // call basic_ostream manipulator
_DEBUG_POINTER(_Pfn);
return ((*_Pfn)(*this));
}
参数为一个函数指针,_Myt是一个类型定义,等价于basic_ostream<_Elem, _Traits>,而endl函数为:
template<class _Elem,
class _Traits> inline
basic_ostream<_Elem, _Traits>&
__CLRCALL_OR_CDECL endl(basic_ostream<_Elem, _Traits>& _Ostr)
{
...
}
所以cout<<endl的时候就通过函数指针调用了endl函数,同时将cout作为参数传入,调用的实际上就是endl(cout)。
代码是VS 2005里面的
_Myt& __CLR_OR_THIS_CALL operator<<(_Myt& (__cdecl *_Pfn)(_Myt&))
{ // call basic_ostream manipulator
_DEBUG_POINTER(_Pfn);
return ((*_Pfn)(*this));
}
参数为一个函数指针,_Myt是一个类型定义,等价于basic_ostream<_Elem, _Traits>,而endl函数为:
template<class _Elem,
class _Traits> inline
basic_ostream<_Elem, _Traits>&
__CLRCALL_OR_CDECL endl(basic_ostream<_Elem, _Traits>& _Ostr)
{
...
}
所以cout<<endl的时候就通过函数指针调用了endl函数,同时将cout作为参数传入,调用的实际上就是endl(cout)。
代码是VS 2005里面的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
个人理解是直接输出个回车?
什么都没输出,直接来个回车吧
期待他人解答
什么都没输出,直接来个回车吧
期待他人解答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询