3

C++の :: 演算子がスコープ解決であることは知っていますが、このようにクラス内で関数を呼び出す目的は何ですか

class MyClass
{
 int myFunc(int argument)
 {
     // do some stuff
     return (::myFunc(another_argument));
 }
}

実用的な理由はありますか?「これ」はその中にサブ意図されていますか?

4

1 に答える 1

9

次のようなユースケースがあるとします。

//in the global namespace
int myFunc(int);

//elsewhere
class MyClass
{
 int myFunc(int argument)
 {
     // do some stuff
     return (::myFunc(another_argument));
 }
}

ここで、メンバー関数とフリー関数を区別する必要があります。これは、C ライブラリをラップするときによく発生します。

この場合::、再帰的に自分自身を呼び出すことになるメンバー関数ではなく、グローバル名前空間に存在するバージョンを選択するようにコンパイルを強制します。

于 2013-02-19T19:26:05.000 に答える