宣言、定義、初期化および付与

4407 ワード

宣言、定義、初期化および付与
プログラムを複数の論理部分に分割して記述するために、C++言語は分離コンパイルメカニズムをサポートする.これにより、プログラムを複数のファイルに分割することができ、各ファイルは独立してコンパイルすることができ、最後にリンクによってリンクされて完全なプログラムを形成することができます.分離コンパイルメカニズムをサポートするために、C++は宣言(declaration)と定義(definition)を区別する.一部の言語は両者を厳密に区別していないが、C/C++は区別しており、両者の意味も大きく異なる.また,混同しやすい初期化と付与もあり,各名詞の説明を以下に示す.
  • declaration宣言は、変数の名前とタイプを説明しますが、ストレージスペースは割り当てられません.
  • definition定義は、変数の名前とタイプも説明し、記憶領域も割り当てています.初期値
  • を入力必要はありません.
  • initialization初期化は特殊な定義であり、初期化=定義と同時に初期値を付与する.
  • assignmentは、メモリ領域が割り当てられた変数にのみ値を割り当てるプロセスです.複数回行うことができます.クラスメンバー変数がコンストラクション関数内で値を割り当てられ、初期値リストで初期化される場合、両者にはいくつかの違いがあり、プログラムの効率に影響します.
  • 。 extern ,
  • 例1:
  • extern int i;//  i
    int j;//     i
    extern double x = 3.14;//         ,      
    
  • 例2
  • int i = 0;//   (  )
    i = 100;//  
    
  • 例3
  • extern int i;//  i,     
    int main(void)
    {
    	/*
     	/tmp/ccUFFnPW.o: In function `main':
    	test.cc:(.text+0x6): undefined reference to `i'
    	collect2: error: ld returned 1 exit status
    	*/
    	i = 0;//error,                 , i                 。
    	return 0;
    }
    
  • 例4
  • //     ,          ,           0
    //      (   )      ,        
    #include 
    using namespace std;
    
    int i;//     0
    
    int main()
    {
        static int j;//     0
        int k;//   
        cout << i << " " << j << " " << k <<  endl;
        return 0;
    }
    

    参考文献
    《C++primer》5 th中国語版