我想知道定义具有std::ostream &
返回类型的函数的原因和优点与仅打印值的void函数相反。例如,如果我想打印一个字符串文字,我可以通过以下两种方式来实现:
std::ostream& print1(std::ostream &os){
os << "print this message";
return os;
}
print1(std::cout);
或
void print2(){
std::cout << "print this message";
}
print2();
现在使用像print1
这样的函数而不是print2
会有什么好处?一个比另一个更有效,还有其他重要的区别吗?
答案 0 :(得分:0)
第一种形式的优点是你可以组合几个输出函数:
print1(mystream)<<" and that's all !";
更实际的是,您可以轻松地使用文件输出而不是控制台输出,甚至是字符串输出。如果一切正常,您也可以编写循环/条件检查,就像使用标准输出函数一样。是的,因为当您写入文件时,事情可能会出错(例如磁盘已满):
if (! print1(mystream))
cout <<" dik full !?";
但这只是一种常见做法。你当然可以选择第二种形式:
print2(); // yes, put on what stream, always cout ??
if (! cout)
cout <<" oops, unexpected output error...";