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(){}

  };

  此時不會報重複定義的錯誤,由於其查找就在當前文件中,不會去管其它文件中的定義。

相關文章
相關標籤/搜索