Cout是ostream_withassign类的对象

时间:2013-11-15 12:29:44

标签: c++ io

enter image description here直到现在我相信cout是ostream类的对象。但是今天我在一本书中读到cout是osream_withassign类的一个对象。 这个班级在哪里。

我是C ++中输入/输出概念的新手。如果有人能解释iostream库中类的层次结构,那么请问? 我用谷歌搜索,但没有找到任何确切的答案。

编辑:我正在附上我后来在同一本书中找到的图像。

2 个答案:

答案 0 :(得分:4)

该标准似乎要求std::cout具有该类型 std::ostream。历史上,在经典(预标准) iostream,它必须是ostream 派生自的类型 ostream。 (未指明哪个,所以执行 没有记录它。)我怀疑这是一个 在标准中意外超出规范,但那就是 它的立场。

从未有过“标准”课程ostream_withassign 你可以指望的。在经典的iostreams之前 标准,至少有一个实现确实有这样一个类, 它用于cout(当时没有std::),以便 管理初始化,虽然我不确定细节。如 据我所知,即便如此,这是一个实施细节,并且 未指定,即使是实施。事实并非如此 广泛;那时我用过的所有实现都没有, 它在我今天所知的任何实现中都不存在。

所以这本书非常过时了。如果这本书声称是 关于C ++,它是错误的,即便在那时。如果它声称是 关于C ++的具体实现,它取决于:如果是 描述内部细节,这是正确的,但如果它声称 在描述界面时,这是错误的。

答案 1 :(得分:0)

关于实际的层次结构,您可以阅读C ++语言的标准,或者查看here

std::coutstd::ostream类型的对象,std::basic_ostream<char>上的typedef。