言語を学ぶいくつかの本を使って作業したところ、初めての本物のC++アプリケーションを手に入れました。 あなたのcppソースファイルには対応するヘッダーが必要ですが、私のプロジェクトのライブラリの1つは、対応するヘッダーを含まないいくつかのcppファイルでうまく構築されています。この特定のcppは、元のクラス宣言だけではなく、異なる名前と他の多数のコードを持つヘッダーにあるクラスを実装します。対応するヘッダのないcppをコンパイルしてください
どのようにして、cppは知識のないクラスに属する関数をコンパイルできますか?
これらの関数の実装は独立してコンパイルでき、ライブラリを使用するクライアントアプリケーション(およびクラス宣言を含むヘッダーを含む)が対応するメンバ関数を呼び出すときに呼び出されますか?この場合、クライアントアプリケーションが実装バイナリをどのように参照していますか? (私はこれがリンカであると仮定します...しかし、私はこれをクリアしてもらいたいです)。
私は、その答えがインクルードとコンパイルのプロセスに関して私の誤解を露呈するかもしれないと思っています。私は本当にC++のこの面をうまく学びたいと思っています。ありがとうございました!
ヘッダーファイルは翻訳単位に文字通り含まれています。魔法はありません。逆に、ヘッダファイルは1970年代の驚くほど粗雑な遺物である。あなたはヘッダーファイルをまったく必要としません。その考えを真剣に受け止めるのは良い考えではありません。システム内の他のアクターに機能を提供しない翻訳ユニットをお持ちの場合、ヘッダーは必要ありません。良い例は、あなたの 'main'関数を含む小さな翻訳単位です。 –
は、コンパイルとリンクについて、これを見ています:http://stackoverflow.com/questions/6264249/how-does-the-compilation-linking-process-work – Sanish