这来自<iostream>:
namespace std
{
extern istream cin; ///< Linked to standard input
extern ostream cout;
...
Run Code Online (Sandbox Code Playgroud)
似乎通过使用extern其他命名空间中定义的数据类型将可用?
extern 表示"这些变量在某些其他编译单元(.cpp或.lib文件)中定义"
在这种情况下,您#include <iostream>进入.cpp文件,因为cin并且cout声明为extern,编译器将允许您使用它们而不会抱怨.然后,当链接器运行时,它会查找所有extern变量并对其进行排序.
小智 5
extern用于表示在其他编译单元中定义的变量(目前,您可以将编译单元视为.cpp文件)。您示例中的语句声明而不是定义 cin和cout。它告诉编译器这些对象的定义,另一个编译单元被发现(如果它们不作为申报extern)。