(a)は、重複するファイルヘッダが含まれている防ぐために、C ++クラスを作成する方法

  今日、私はシンプルなテーマを使用し、私はそれの最初のエッセイ庭園のブログに書いたように始まり、C ++クラスを記述します。

  このテーマは、小さすぎない「どのようにC ++クラスを作成する。」、誰がああではないだろう、クラスを記述します。ええと,,,私はC ++クラスを書いて見つかったのは非常に簡単ですが、多くの人がぞっとする、クラスの外に書くために特にちょうど学校や訓練の学生のうち、悪い書かれています。(実際には、ちょうど学校のうちブロガーが何をしたときに、ハハ、ない差別が、私たちは成長しているプロセスを持っている)、私はこのトピックはそれがものの数の記事まで、である、比較的小さいと思ったが、、、それの考えを書き始めたなし10件の記事、について話を本当にたくさん。(...終わっ非常に、非常に長い記事とは何、?、それを忘れて、私は自虐的傾向ではないよん、だけでなく、自分自身を強化するために、仕事に行くためには時間ああ、)

  さて、前置きなしに、単純なクラスの最初は、最初のコードを見ては、ヘッダファイルperson.hである(ちなみに、私はただの例を考えるのは難しい、結局、人を作成したいが、私は普通に動作しないことができる例は、それらは企業秘密です、ベテランの恐怖がドアに来て、それが厄介です...)。

1  #ifndefの_Person_H
 2   の#define _Person_H
 3      
4  クラス5  {   
 6  公共7       人()。 
8       
9人();
10                                                                               
11   プライベート12  }。  
13       
14   #endifの

  その後、ファイルがperson.cppです

1つの#include <iostreamの>                  
 2の#include " person.h "                   
3             
4  使用STD :: COUTと、
5  使用してのstd ::てendlを。                                                            
6             
7  人::人()
 8  {          
 9      COUT << " 人物を作成" << ENDL。
10  }          
 11             
12人::〜人()                    
 13  {          
 14      COUTは<< " 人を解放"<< てendl;
15 }

  そして、実行可能ファイルmain.cppに

1の#include <iostreamの>
 2の#include " person.h " 
3  使用 名前空間STDを、
4  
5  INT )(メイン        
 6  {                 
 7      人の人。                                                          
8      リターン 0 ;     
9 }

  OK!それをコンパイルして実行して次!

 

   グッド!まず、#1 IFNDEFを追加するのはなぜファイルperson.hヘッダファイルで、起動するのが最も単純なものから、#は、プリコンパイルおよび#endifの文にそれを定義しますか?だから何がなければ?

  一例を与えるために、私は上の理由についてお話しましょう、理由が含まれている重複したヘッダファイルを防ぐためである、_Person_H_ IFNDEF#それは_Person_H_マクロを定義されていない場合は、このマクロのソースファイルを持っていたら、_Person_H_を#defineしマクロは、_Person_H_を定義した意味次に、ヘッダを含み、それらは、範囲#ifndefのを入力繰り返し同じ変数を定義もちろんの背面#endifの、#endifの後ろないコードから直接実行されないであろう、この文書は無視することができ、次の2つの例に今すぐ!

  まず、元person.hはプリペアドステートメントで除去しました。

1  // #ifndefの_Person_H
 2  // の#define _Person_H 
3    
4  クラス5  { 
 6  公共7      人()。
8    
9人();
10     
11   プライベート12  }。
13     
14   // #endifの

  次に、ヘッダファイルmain.cppにで繰り返さ含むperson.h

1の#include <iostreamの>
 2の#include " person.h " 
3の#include " person.h "                                                              
4  使って 名前空間STDを、
5                       
6  INT )(メイン           
 7  {                    
 8      人の人。
9      リターン 0 ;        
10 }  

  結果をコンパイルします。

 

  ヘッダファイルが含まれて繰り返された場合でも、もちろん、私たちがコメントを削除し、定義を繰り返し、結果のエラーをコンパイルし、参照元プリコンパイル済みヘッダを復元し、重複定義エラーが表示されません。

  もちろん、一部の人は、「私は二度同じファイルが含まれている同じヘッダファイルで、それほど愚かではなかった」、と言うだろう、そうああ、あなたは二度異なるファイルのヘッダーファイルが含まれている場合?次の例を参照してください。

  新しいファイルを追加TEST.H、ただの#include「person.h」ステートメントを追加します。

1  #ifndefの_TEST_H   
 2  の#define _TEST_H   
 3                       
4の#include " person.h "                                                              
5                       
6  #ENDIF 

  そして、main.cppにはTEST.Hファイルがあります。

1の#include <iostreamの>
 2の#include " person.h " 
3の#include " TEST.H "                                                                
4  使って 名前空間STDを、
5                   
6  INT )(メイン       
 7  {                
 8      人の人。
9      リターン 0 ;  
10 }  

  コンパイルします。

 

   それが含まれている間違っ繰り返しです。

  おそらく一部の人々が主張する、と私は、何の問題ああが存在しないことなく、この、またはドキュメントの一部を追加することはありません。私はちょうどあなたがコードは単純すぎる書くので、それはだ、あなたに1つをスローします。私は、毎日仕事C ++プロジェクトコードに非常に一般的なGしているので、良い習慣を開発するために、プログラムの内容に非常に集中するか、あるいは間違って行く、ハハ、死んでバグを見つけることができます。

おすすめ

転載: www.cnblogs.com/qiuquanguan/p/11563498.html