ファイルに静的関数を持つことのユーティリティは何ですか?
ファイルにグローバル関数を持つこととどう違うのですか?
static int Square(int i)
{
return i * i;
}
対
int Square(int i)
{
return i * i;
}
ファイルに静的関数を持つことの有用性は何ですか?
これらの関数を使用して、同じファイル内の他の関数に共有実装ロジックを提供できます。ファイル固有のさまざまなヘルパー関数は、file-staticとして宣言するのに適しています。
ファイルにグローバル関数を持つこととはどう違いますか?
これらはリンカからは見えないため、他のコンパイルユニットが同じシグネチャを持つ関数を定義できます。名前空間を使用すると、この問題は大幅に軽減されますが、file -static
関数はCプログラミング言語から継承された機能であるため、名前空間よりも前になります。
static
関数は、リンカが関数をエクスポートできないことを意味します(つまり、他の 翻訳単位 から見えるようにします)。関数を現在の翻訳単位に「プライベート」にします。匿名の名前空間で関数をラップするのと同じです。
namespace {
int Square(int i)
{
return i * i;
}
}
一般に、static
キーワードを使用する代わりに、匿名の名前空間を使用することは、これを達成するための推奨されるC++の方法です。
静的関数は、定義されているファイル上でのみ表示されます。その特定のファイルの外でそれらを参照することはできません。
Wordでは、リンケージ。 static
関数には内部リンケージがあります。つまり、変換単位の外部からは見えません。