c++中重载输出流对象,为啥要返回引用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中重载输出流对象,为啥要返回引用相关的知识,希望对你有一定的参考价值。
解释提问者的问题,问题不在于你返回的对象还是对象的引用,问题处在你定义的方法的返回值类型不对,这是有要求的,那么在哪里要求的呢,现做如下说明供参考。流运算符重载的方法,是在流中使用模版方法template定义的,如下
template<class _Elem,
class _Traits> inline
basic_ostream<_Elem, _Traits>& __CLRCALL_OR_CDECL operator<<(
basic_ostream<_Elem, _Traits>& _Ostr, const char *_Val){}
注意模版方法定义的返回值类型为一个流泛型对象的引用,因此你定义的不对。至于你返回的是对象还是对象的引用不会导致错误。
(如果楼主不理解模版,可以简单的认为,模版就是个样例,它定义好了,我们必须按照他定义的方式去实现。如果学习C++的话,模版必学,个人建议仅供参考) 参考技术A
这样返回的流对象可以继续使用,如
cout << ml1 << \' \' << ml2;返回值后添加引用就没有错了,这是为什么?
以上是关于c++中重载输出流对象,为啥要返回引用的主要内容,如果未能解决你的问题,请参考以下文章