【问题标题】:For using a standard library function in C++, what exactly is the relationship between its header file and std namespace?在 C++ 中使用标准库函数,它的头文件和 std 命名空间之间究竟是什么关系?
【发布时间】:2021-09-26 07:41:43
【问题描述】:

在C++中,既然命名空间std包含了所有标准库函数的声明,那为什么还要包含iostream头文件才能使用I/O函数呢?难道我们不能只写“使用命名空间标准”以便编译器知道从哪里得到定义吗?如果该函数声明已经存在于 std 命名空间中,我想知道是否需要包含一个头文件以使用字符串等任何功能。

【问题讨论】:

  • 这能回答你的问题吗? C++ namespace and include
  • 相关问题stackoverflow.com/questions/31816095/… 顺便说一句:using namespace xyz; 与包含的效果完全不同;它只是改变了您引用现有符号的方式。即使没有using namespace std;,您也可以使用全名std::cout 引用cout。如果您要问为什么符号在没有包含的情况下默认不可用:这是 C 诞生时做出的设计决定......当时的 pc 比现在的性能要低得多。

标签: c++ namespaces std header-files iostream


【解决方案1】:

编译器在包含的头文件中找到声明的命名空间std。它不知道从哪里获取定义,除非您不通过包含库来指定它。

【讨论】:

    猜你喜欢
    • 2013-09-29
    • 2020-12-16
    • 2015-11-16
    • 2016-10-03
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多