gpt4 book ai didi

c++ - operator<< 函数的返回值

转载 作者:太空狗 更新时间:2023-10-29 19:46:04 24 4
gpt4 key购买 nike

我知道我应该从“operator<<”返回“ostream&”以便能够像这样“链接”运算符(operator)

cout<<a<<b<<c;

但是,在下面的代码中,我没有返回“ostream&”并且链接仍然是可能的。为什么?

#include <iostream>
using namespace std;

class CComplexNumber{
float m_realPart;
float m_imagPart;
public:
CComplexNumber(float r,float i):m_realPart(r),m_imagPart(i){}

friend ostream& operator<<(ostream& lhs,CComplexNumber rhs){
lhs<<"["<<rhs.m_realPart<<","<<rhs.m_imagPart<<"]"<<endl;
//MISSING RETURN STATEMENT!
}
};

int main() {
CComplexNumber a(1,2);
CComplexNumber b(3,4);
CComplexNumber c(5,6);

cout<<a<<b<<c;

return 0;
}

输出

[1,2]
[3,4]
[5,6]

最佳答案

从非 void 函数的末尾掉落是未定义的行为。一种可能的未定义行为正在按您预期的方式工作,即返回到位。

g++ 提供了一个方便的警告来防止这种情况发生在你身上。

关于c++ - operator<< 函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17953576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com