首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iostream报头与iostream类

iostream报头与iostream类
EN

Stack Overflow用户
提问于 2011-04-19 18:20:54
回答 2查看 763关注 0票数 4

如果有一个文件foo.cpp,那么它通常有一个相关的头文件foo.h,其中包含在foo.cpp中定义的函数的所有声明。这样,使用foo.cpp中函数的所有其他文件都可以只包含foo.h文件并使用它们。这是我对头文件的简单理解。

但是,我没有看到iostream头文件和iostream类之间存在这样的关系。iostream头文件只声明了几个外部变量,但它们似乎都与iostream类直接无关。iostream类似乎也不声明任何新函数。为什么我们有iostream类和iostream头文件?如果我听起来很困惑,很抱歉,但这件事真的让我很困惑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-19 18:22:15

标题和类之间的关系不一定是一对一的;这只是一条经验法则,通常是给新手程序员学习的。事实上,C++语言标准根本没有指定类、实现文件(翻译单位)和头之间的任何直接关系,标准库常常偏离这一规则。

std::iostream是模板类std::basic_iostream (特别是针对basic_iostream<char>)的typedef。在我的平台上,<iostream>包括定义basic_iostream<istream>和包含typedef<iosfwd>

票数 1
EN

Stack Overflow用户

发布于 2011-04-19 18:24:07

模板是一种特例,如果您声明一个模板类或函数并在另一个文件中定义它,您就会遇到麻烦。由于C++编译器只能编译模板元素的实例化(如std::vector<int>),而不能编译它们的泛型版本(即std::vector<T>),所以它需要在实例化的任何地方都可以使用泛型版本。因此,泛型类的实现通常在其头文件中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5720834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档