内部连接:假如一个名称对于他的编译单元来说是局部的,并且在连接时不会和其他编译单元中的同样的名称相冲突,那么这个名称有内部连接(注:有时也将声明看作是无连接的,这里我们统一看成是内部连接的)。

  以下情况有内部连接:

  a)任何的声明
  b)名字空间(包括全局名字空间)中的静态自由函数、静态友元函数、静态变量的定义
  c)enum定义
  d)inline函数定义(包括自由函数和非自由函数)
  e)类的定义
  f)名字空间中const常量定义
  g)union的定义

  外部连接:在一个多文档程式中,假如一个名称在连接时能够和其他编译单元交互,那么这个名称就有外部连接。

  以下情况有外部连接:

  a)类非inline函数总有外部连接。包括类成员函数和类静态成员函数
  b)类静态成员变量总有外部连接。
  c)名字空间(包括全局名字空间)中非静态自由函数、非静态友元函数及非静态变量