-5

次のようなコードがあります。

foo::foofa(string n){
    loadFoo(fn);
}

foo::foofa とはどういう意味ですか? :: が何をしているのかよくわかりません。ありがとう。

編集:また、::なしでこれを書く別の方法はありますか、それとも必要ですか?

4

4 に答える 4

9

::識別子が参照するコンテキストを識別および指定するために使用するスコープ演算子です。

非常に単純なGoogle 検索を使用して、IBM は次のように説明しています。

:: (スコープ解決) 演算子は、非表示の名前を引き続き使用できるように修飾するために使用されます。名前空間スコープまたはグローバル スコープ名が、ブロックまたはクラスでの同じ名前の明示的な宣言によって隠されている場合は、単項スコープ演算子を使用できます。

于 2013-04-29T18:29:03.290 に答える
8

:: が何をしているのかよくわかりません。

これはスコープ解決演算子です。

fooがクラス (または名前空間) であり、foofaがそのクラス内で宣言されている場合、クラス内では単純に として参照できますfoofafoo::foofaただし、クラスの外では、この演算子を使用して、この特定の ;を意味することを指定する必要があります。他のクラスまたは名前空間内にスコープが設定された他のものがある可能性があります。

また、を使わずにこれを書く別の方法はありますか、::それとも必要ですか?

クラス定義の外で必要です。クラス内で関数を定義できます。

class foo {
    void foofa(string n) { // No foo:: needed here
        loadFoo(n);
    }
};

Iffooが名前空間の場合using、 の必要性を回避するために を使用することもできますが::、これはよくない考えであるため、その方法については説明しません。

于 2013-04-29T18:32:21.057 に答える
2
::

scope resolutionオペレーターです。スコープ解決オペレーターより引用

:: (スコープ解決) 演算子は、非表示の名前を引き続き使用できるように修飾するために使用されます。名前空間スコープまたはグローバル スコープ名が、ブロックまたはクラスでの同じ名前の明示的な宣言によって隠されている場合は、単項スコープ演算子を使用できます。

クラス スコープ演算子を使用して、クラス名またはクラス メンバー名を修飾することもできます。クラス メンバー名が非表示の場合は、クラス名とクラス スコープ演算子で修飾することで使用できます。

于 2013-04-29T18:29:21.873 に答える
1

:: はスコープを示します。したがって、名前空間またはクラス名のいずれかです。たとえば、標準 (std) 名前空間で sort 関数にアクセスする場合は、次を使用します。

std::sort
于 2013-04-29T18:30:14.190 に答える