直到现在我相信cout是ostream类的对象。但是今天我在一本书中读到cout是osream_withassign类的一个对象。 这个班级在哪里。
我是C ++中输入/输出概念的新手。如果有人能解释iostream库中类的层次结构,那么请问? 我用谷歌搜索,但没有找到任何确切的答案。
编辑:我正在附上我后来在同一本书中找到的图像。
答案 0 :(得分:4)
该标准似乎要求std::cout
具有该类型
std::ostream
。历史上,在经典(预标准)
iostream,它必须是ostream
或派生自的类型
ostream
。 (未指明哪个,所以执行
没有记录它。)我怀疑这是一个
在标准中意外超出规范,但那就是
它的立场。
从未有过“标准”课程ostream_withassign
你可以指望的。在经典的iostreams之前
标准,至少有一个实现确实有这样一个类,
它用于cout
(当时没有std::
),以便
管理初始化,虽然我不确定细节。如
据我所知,即便如此,这是一个实施细节,并且
未指定,即使是实施。事实并非如此
广泛;那时我用过的所有实现都没有,
它在我今天所知的任何实现中都不存在。
所以这本书非常过时了。如果这本书声称是 关于C ++,它是错误的,即便在那时。如果它声称是 关于C ++的具体实现,它取决于:如果是 描述内部细节,这是正确的,但如果它声称 在描述界面时,这是错误的。
答案 1 :(得分:0)
关于实际的层次结构,您可以阅读C ++语言的标准,或者查看here
std::cout
是std::ostream
类型的对象,std::basic_ostream<char>
上的typedef。