我重载了+ =运算符,我的代码如下: 矩阵只是一个矢量>
如果我这样做:
matrix1+=matrix2;
cout<<matrix1; // i have overloaded <<
代码编译没有错误,但没有输出。 有人可以指出这有什么问题吗? 谢谢!
答案 0 :(得分:2)
std::cout
是缓冲输出流。这意味着您写入流的内容将写入缓冲区。只要遇到换行符,就会刷新此缓冲区,或者您使用以下命令手动指示流刷新缓冲区:std::basic_ostream::flush
。
在您的示例中,您可以在结尾处添加:<< '\n'
,或者您可以调用:cout.flush();
两者都会刷新您的输出。如果没有缓冲流,例如std::cerr
,则输出将被打印而不需要换行或刷新。
注意:换行字符刷新输出的原因是,在您的情况下std::cout
指向行缓冲终端。如果没有,则必须手动拨打flush
。