extern如何在c ++中工作?

sym*_*ony 6 c++ syntax extern

这来自<iostream>:

namespace std 
{
  extern istream cin;       ///< Linked to standard input
  extern ostream cout;  
...
Run Code Online (Sandbox Code Playgroud)

似乎通过使用extern其他命名空间中定义的数据类型将可用?

Dea*_*ing 8

extern 表示"这些变量在某些其他编译单元(.cpp或.lib文件)中定义"

在这种情况下,您#include <iostream>进入.cpp文件,因为cin并且cout声明为extern,编译器将允许您使用它们而不会抱怨.然后,当链接器运行时,它会查找所有extern变量并对其进行排序.

  • 这意味着`cin`是.这与*class definition*不同,在本例中,它位于`iostream`中.*类定义*必须始终在编译单元中可用,以使用该类类型的对象(这就是将类定义放入*header*文件的原因). (2认同)

小智 5

extern用于表示在其他编译单元中定义的变量(目前,您可以将编译单元视为.cpp文件)。您示例中的语句声明而不是定义 cincout。它告诉编译器这些对象的定义,另一个编译单元被发现(如果它们作为申报extern)。