今日、私はシンプルなテーマを使用し、私はそれの最初のエッセイ庭園のブログに書いたように始まり、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しているので、良い習慣を開発するために、プログラムの内容に非常に集中するか、あるいは間違って行く、ハハ、死んでバグを見つけることができます。。。