C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – object.operator有什么作用?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Why does explicitly calling operator<< on std::cout cause unexpected output?                                    2个
我看到了以下代码

cout.operator << ("Hello");

并认为它将是相同的:

cout << "Hello";

但它打印:

0x46e030

它是如何工作的?它能做什么?

解决方法

object.operator<≤(?);与std :: ostream :: operator<<(std :: ostream&,??)不完全相同,因为它排除了非成员(免费)函数. std :: ostream :: operator<<成员是:

basic_ostream& operator<<( short value );
basic_ostream& operator<<( unsigned short value );
basic_ostream& operator<<( int value );
basic_ostream& operator<<( unsigned int value );
basic_ostream& operator<<( long value );
basic_ostream& operator<<( unsigned long value );
basic_ostream& operator<<( long long value );
basic_ostream& operator<<( unsigned long long value );
basic_ostream& operator<<( float value );
basic_ostream& operator<<( double value );
basic_ostream& operator<<( long double value );
basic_ostream& operator<<( bool value );
basic_ostream& operator<<( const void* value );
basic_ostream& operator<<( std::basic_streambuf<CharT,Traits>* sb);
basic_ostream& operator<<( basic_ostream& st,std::ios_base& (*funC)(std::ios_base&) );
basic_ostream& operator<<( basic_ostream& st,std::basic_ios<CharT,Traits>& (*funC)(std::basic_ios<CharT,Traits>&) );
basic_ostream& operator<<( basic_ostream& st,std::basic_ostream& (*funC)(std::basic_ostream&) );

缺少const char *可能看起来令人困惑,但回想一下,你可以添加自由运算符<<除了上述成员之外,还有其他功能. < ostream的>包括这些:

ostream& operator<<( ostream& os,CharT ch );
ostream& operator<<( ostream& os,char ch );
ostream& operator<<( ostream& os,signed char ch );
ostream& operator<<( ostream& os,unsigned char ch );
ostream& operator<<( ostream& os,const charT* s );
ostream& operator<<( ostream& os,const char* s );
ostream& operator<<( ostream& os,const signed char* s );
ostream& operator<<( ostream& os,const unsigned char* s );
template< class T >
ostream& operator<<( ostream&& os,const T& value );

通过专门调用object.operator<<(??)重载,你明确告诉它不要使用自由函数,只使用成员函数. “HelLO”的最佳匹配是void *重载,因此它打印了字符串的地址.

大佬总结

以上是大佬教程为你收集整理的c – object.operator有什么作用?全部内容,希望文章能够帮你解决c – object.operator有什么作用?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。