在所有平台中,哪个版本的函数(myfunc2
或myfunc3
)都是正确的。
ostream &myfunc1(ostream &os) const {
//
return os;
}
ostream &myfunc2(ostream &os) const {
os << myfunc1(os);
}
ostream &myfunc3(ostream &os) const {
os << myfunc1(os).rdbuf();
}
答案 0 :(得分:2)
您无需访问流的rdbuf()
,该流访问streambuf
中的基础缓冲区。
从概念上讲,ostream
是streambuf
的前端。您在myfunc3
中所做的是直接从rdbuf
访问streambuf
,绕过ostream
的界面。
这可以做到,但这种情况并不常见。坚持myfunc2
,这是通常的做法。