C++ 内接连与外接连

一、内链接与外链接的最大区别是其查找某个定义时,所采用的策略。函数

   内链接:spa

    对这个定义的访问被局限在当前编译单元,其余编译单元没法访问,因此在链接时,它不会和其它的编译对象(.o/.obj)对象做比较,因此这些对象,也不能经过extern来访问。(static、const、类的成员/函数)对象

   外链接:编译

    可被其余单元访问,那么在链接时,会在其它编译对象中查找,判断是否重复,是否被定义。class

二、外链接:引用

  即在声明时使用extern,并给出定义,在其它文件中使用时,使用extern加上声明就可static

  如:文件

  在 1.cpp:co

  extern int num = 111;错误

  void Test(){}

  在 2.cpp:

  extern int num; // 此处引用1.cpp的num

  extern void Test();

三、内链接:

  在1.cpp中:

  static int a = 3;

  const int b = 4;

  class A

  {

    int c;

    void Test(){}

  };

  在2.cpp中:

  static int a = 5;

  const int b = 6;

  class B

  {

    int c;

    void Test(){}

  };

  此时不会报重复定义的错误,由于其查找就在当前文件中,不会去管其它文件中的定义。

相关文章
相关标签/搜索