次のようなコードがあります。
foo::foofa(string n){
loadFoo(fn);
}
foo::foofa とはどういう意味ですか? :: が何をしているのかよくわかりません。ありがとう。
編集:また、::なしでこれを書く別の方法はありますか、それとも必要ですか?
::
識別子が参照するコンテキストを識別および指定するために使用するスコープ演算子です。
非常に単純なGoogle 検索を使用して、IBM は次のように説明しています。
:: (スコープ解決) 演算子は、非表示の名前を引き続き使用できるように修飾するために使用されます。名前空間スコープまたはグローバル スコープ名が、ブロックまたはクラスでの同じ名前の明示的な宣言によって隠されている場合は、単項スコープ演算子を使用できます。
:: が何をしているのかよくわかりません。
これはスコープ解決演算子です。
foo
がクラス (または名前空間) であり、foofa
がそのクラス内で宣言されている場合、クラス内では単純に として参照できますfoofa
。foo::foofa
ただし、クラスの外では、この演算子を使用して、この特定の ;を意味することを指定する必要があります。他のクラスまたは名前空間内にスコープが設定された他のものがある可能性があります。
また、を使わずにこれを書く別の方法はありますか、
::
それとも必要ですか?
クラス定義の外で必要です。クラス内で関数を定義できます。
class foo {
void foofa(string n) { // No foo:: needed here
loadFoo(n);
}
};
Iffoo
が名前空間の場合using
、 の必要性を回避するために を使用することもできますが::
、これはよくない考えであるため、その方法については説明しません。
::
scope resolution
オペレーターです。スコープ解決オペレーターより引用
:: (スコープ解決) 演算子は、非表示の名前を引き続き使用できるように修飾するために使用されます。名前空間スコープまたはグローバル スコープ名が、ブロックまたはクラスでの同じ名前の明示的な宣言によって隠されている場合は、単項スコープ演算子を使用できます。
クラス スコープ演算子を使用して、クラス名またはクラス メンバー名を修飾することもできます。クラス メンバー名が非表示の場合は、クラス名とクラス スコープ演算子で修飾することで使用できます。
:: はスコープを示します。したがって、名前空間またはクラス名のいずれかです。たとえば、標準 (std) 名前空間で sort 関数にアクセスする場合は、次を使用します。
std::sort