为什么不能直接cout<<a+b类对象?

a和b为类对象,已经重载了+号和<<号

为什么不能直接cout<<a+b;求  指教!

 

参考GPT和自己的思路:

因为cout<<操作符的左边是一个输出流对象,右边是要输出的数据。而a+b是一个临时对象,它的生命周期在这一行语句执行完后就结束了,无法被输出流对象cout所捕捉到,从而无法正确输出。正确的做法应该是定义一个输出流重载+号运算符的友元函数,将a+b转化为一个可以直接输出的对象,或者将a+b赋值给一个新的类对象,再通过重载<<号运算符来将其输出。