extern ostream cout;
extern ostream cerr;
extern ostream clog;
cout,cerr和clog被声明为ostream的类型。但是cout和clog有缓冲,但cerr没有。
为什么相同类型的对象表现不同?
答案 0 :(得分:2)
这三个对象具有相同的类型,但它们不是同一个实例。 ostream
的实例可以配置不同;在这种情况下,三个对象被配置为以其特定方式处理每个对象。这是有道理的:如果同一个类的所有对象都以完全相同的方式运行,那么就没有理由首先将它们作为单独的对象。
答案 1 :(得分:2)
constructor采用streambuf
选项
explicit ostream (streambuf * sb);
我猜他们每个都使用不同的streambuf
输出,而那些streambuf
对象控制输出的缓冲(或不是)。