C++ 重载输入/输出运算符

C++ 重载输入/输出运算符,c++,function,operator-overloading,cout,C++,Function,Operator Overloading,Cout,重载输入或输出运算符(>>或时,另一个参数是cout本身。调用变为operator另一个参数是cout本身。调用变为operator考虑这种情况: cout<<m1 cout考虑一下这种情况: cout<<m1 cout 另一个ostream对象参数呢?它是如何工作的 如果编译器发现: a = b <op> c; a=bc; (其中可以是+、-、==、>>,等等),编译器将尝试以下解决方案: a = operator <op>(b, c);

重载输入或输出运算符(>>或时,另一个参数是
cout
本身。调用变为
operator另一个参数是
cout
本身。调用变为
operator考虑这种情况:

cout<<m1
cout考虑一下这种情况:

cout<<m1
cout
另一个ostream对象参数呢?它是如何工作的

如果编译器发现:

a = b <op> c;
a=bc;
(其中
可以是+、-、==、>>,等等),编译器将尝试以下解决方案:

a = operator <op>(b, c); // (1)
a = b.operator <op> (c); // (2)
a=运算符(b,c);//(1)
a=b.运算符(c);/(2)
这取决于运算符的类型(例如,+是二进制运算符,不能以形式(2)实现)和可用的实现(您编写的代码和解析优先级)

接线员 另一个ostream对象参数呢?它是如何工作的

如果编译器发现:

a = b <op> c;
a=bc;
(其中
可以是+、-、==、>>,等等),编译器将尝试以下解决方案:

a = operator <op>(b, c); // (1)
a = b.operator <op> (c); // (2)
a=运算符(b,c);//(1)
a=b.运算符(c);/(2)
这取决于运算符的类型(例如,+是二进制运算符,不能以形式(2)实现)和可用的实现(您编写的代码和解析优先级)


对于运算符,但不能从函数返回ostream&吗?我仍然只看到一个参数m1传递给function@Engineer999:像
cout@Engineer999
cout
是函数的第一个参数,也是返回的对象。这意味着表达式
cout
和表达式都是e> cout@Engineer999:如果不将它作为参数,并且不引用
cout
,您如何返回
cout
?我刚刚感到困惑,因为cout在函数的左侧,但不能返回ostream&函数?我仍然只看到一个参数m1传递给function@Engineer999:一个二元运算符,如cout@Engineer999
cout
是函数的第一个参数,也是返回的对象。这意味着表达式
cout
和表达式
cout@Engineer999:如果你不把它作为参数,也不引用
cout
,你怎么能返回
cout
?我刚刚得到了一些信息因为cout位于
Matrix m1;
cout<<m1;
Matrix m1;
operator<<(cout, m1);
int i;
cout.operator<<(i);