を見てみましょう。オブジェクトファイルには、対応するcppで定義されているすべてのグローバルデータと関数のアドレスが含まれています。彼らは相対的な方法でいくつかのメモリをレイアウトし、そのファイル内でこれらのグローバル変数/関数がどこにあるのかを知るように指示します。したがって、たとえば
これは、あなたがまっすぐCを前にしたことを考えるのは簡単です。純粋なC言語の世界では、より伝統的なモジュラプログラミングの意味でのことを行います。あなたのモジュールはヘッダとcppで定義されます。ヘッダーは、以下のような "パブリック"変数を定義し、externキーワードを使用して、それをcppでインスタンス化します。
がfoo.h
extern int bands;
foo.cpp
#include "foo.h"
int bands;
foo.obj:
int bands can be found 0 bytes from the beginning of this file
"のextern" キーワードこの名前が有効であることの状態とその対処しますリンク時に解決されます。 "foo.h"を含んでいて、 "bands"グローバル変数を使用したいと思った人は、今、それを使うことができました。リンク時に、リンカは、foo.objにバンドが存在していることがわかります。 foo.objに "int bands"を入れるのを忘れた場合は、リンカエラーが発生し、解決しなければなりません。
クラスの宣言で静的を使用するC++では同様です。あなたは、 "foo :: bands"と呼ばれるものが存在することをユーザに伝えており、リンクされた場所ではリンク時に解決されます。その後、リンカーはfoo.objのfoo :: bandsが存在することを確認し、foo :: bandsへのすべての参照を解決することができます。
。バンドを静的にすることを意味しましたか? – jalf