多くの書籍では、ヘッダファイルをインクルードするための#includeを教えてきましたが、なぜソースファイルを含めることはできません教えませんでした。。。だから、何人かの学生は(OK、私は認める、私は大学でこれを行っている、と間違って行くことはありませんラッキーだった)には、直接、ソースファイルが含まれてみました。
最終的にはそれは、ソースドキュメントを含むべきではないでしょうか?
限定を持って、このドキュメントのライフサイクルでの静的および効果的なインターフェースについての直接の.cppファイル、CPPファイルとインタフェースがまだ完全には外部の.cppファイルにさらされていないことを静的変数を、含まれている場合、私は、矛盾を希望しますウール?直接モジュールは、プログラムファイルに応じて分割することができ、ソースファイルが含まれていません。(多くの学生は言うかもしれないが、常にモジュラー言った、あなたはこれらの用語を吹く知って、それがどのような使用であると感じていない、ええと、その後、再び、あなたは小さなプログラムを書く)モジュラーもちろん、これは誘惑に利益をもたらしますあなたは、あなたがコンパイル与えていないことはできない、とあなたは今、それを印象づけます。次の例では、簡単に重複した定義につながる可能性が誤りを含んでいるような直接.cppファイルの練習を参照してください。
それともの一例として、そのプログラムのオリジナル。
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!これは、ハハ、問題ではないが、書面で「普通」です。しかし、結果はまだそれを実行するために見えます。
直接の#includeが含まれている場合でも、「.cppファイルは、」結果が表示されるものを、それを提出します。次の例を参照してください。
main.cppにファイルが直接person.cppファイルが含まれていました。
1の#include <iostreamの> 2の#include " person.cpp " 3 4 使用して 名前空間STDを、 5 6 INT )(メイン 7 { 8 人の人。 9 リターン 0 ; 10 }
コンパイルして実行します。
コンパイルしないにつながる複数の定義がありました。
要約すると、我々は、やむを得ない事由があった場合でも、.cppファイルが含まれて直接お勧めしません書かれるべきではない、例えば、一部の人が言って、この人がある(た.cppプログラムの内容は、プログラムを拡張するように、長すぎると言う、あなたは再設計をする必要がありプログラムモジュールにプログラムが)、または符号化効率を向上させるために(Chedanは、ああ、コンピュータが機械に1970年代から1980年代にかけて、それを)使用していない、悪いこの時間をコンパイルしていないことを今、別のは言ったコンパイラの効率を向上させることができます。