グローバルと静的グローバルの違いは、グローバル変数はexternを介して別の実装ファイルで参照できるのに対し、静的グローバルはその実装ファイルにのみローカライズされることです。詳細については、次の 2 つの質問を参照してください: [ 1 , 2 ]。
私が理解していることから、これは次のことを意味し、同じようにリンクする必要がありますfoo()
。bar()
どちらの機能も でのみ使用できますMyClass
。
//MyClass.h
Class MyClass{
private:
static void foo();
};
//MyClass.cpp
void MyClass::foo(){}
static void bar(){}
の宣言は、ヘッダー ファイルがクラス全体をより完全にレイアウトできるため、より一般的であることがわかります(foo()
プライベートなものを使用できない/使用しない場合でも)。bar()
ヘッダファイル)?
コンテキストとして、動作するために静的である必要がある for Windows メッセージを定義しWNDPROC
ていますが、それはかなり醜い宣言であり、実装ファイルで完全に非表示にするか、先に進んでヘッダー ファイルで宣言するかがわかりません。 .