Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 操作员过载疑问_C++_Class_Operator Overloading_Operators - Fatal编程技术网

C++ 操作员过载疑问

C++ 操作员过载疑问,c++,class,operator-overloading,operators,C++,Class,Operator Overloading,Operators,我试着写一些操作符重载函数,特别是如果你想链接操作符如果你想链接操作符返回一个引用可以链接操作符,比如 std::cout << e1 << e2; std::cout返回引用允许您链接操作符,如 std::cout << e1 << e2; std::cout返回一个引用而不是void,这样就可以像 out << obj1 << obj2 << obj3; 返回一个引用而不是void,这样就可以像 out

我试着写一些操作符重载函数,特别是
如果你想链接
操作符如果你想链接
操作符返回一个引用可以链接操作符,比如

std::cout << e1 << e2;

std::cout返回引用允许您链接操作符,如

std::cout << e1 << e2;
std::cout返回一个引用而不是
void
,这样就可以像

out << obj1 << obj2 << obj3;
返回一个引用而不是
void
,这样就可以像

out << obj1 << obj2 << obj3;

你可以写一些东西,比如
cout你可以写一些东西,比如
cout-See,这一点现在很清楚了,甚至没有考虑到链接的可能性。谢谢你,现在清楚了,我甚至没有考虑过链接的可能性。谢谢你,
(obj1=obj2)+obj3
不应该是
(obj1=obj2)=obj3
?无论如何,谢谢你,这是helpful@luigi我只是选择了
operator+
(代码中没有定义),而不是
operator=
。没关系。将
=
链接在一起可能更常见。哦,好吧,虽然你的意思是@songyuanyao在下面写的。难道
(obj1=obj2)+obj3
不应该是
(obj1=obj2)=obj3
?无论如何,谢谢你,这是helpful@luigi我只是选择了
operator+
(代码中没有定义),而不是
operator=
。没关系。不过,将
=
链接在一起可能更常见。哦,好吧,尽管你的意思与@songyuanyao在下面写的类似。
out << a << b;
(out << a) << b;
^^^^^^^^^^
lhs has to be a stream
Custom obj1, obj2, obj3;
(obj1 = obj2) + obj3 ... // assign obj2 to obj1 and work with that...
std::cout << e1 << e2;
out << obj1 << obj2 << obj3;
obj1=obj2=obj3;