重载流输出符
请问为什么下面这个程序输出那么多星号?
#include <iostream>
#include <string>
using namespace std;
ostream operator < <(ostream & os,const string str);
int main()
{
string str1= "wm! ";
cout < <str1;
return 0;
}
ostream operator < <(ostream & os,const string str)
{
os < < "*** *** " < <str < <endl;
return 0;
}
[解决办法]
编译应该会出错的
星号是因为递归调用
[解决办法]
因为cout < <str1这条语句被重载了...当编译器看支这条语句时其实是指定运行那个重载函数
ostream operator < <(ostream & os,const string str)所以当然会有*号啦....
[解决办法]
#include <iostream>
#include <string>
using namespace std;
ostream operator < <(ostream & os,const string str);
int main()
{
string str1= "wm! ";
cout < <str1;
return 0;
}
ostream operator < <(ostream & os,const string str)
{
os < < "*** *** " < <endl;
return 0;
}
这样就是对的,你的重载没有实现连续输出。
若要连续输出。就要返出对像引用。
ostream & operator < <(ostream & os,const string str)