2

最初にそのクラスのインスタンスを作成せずに、クラス内で静的メンバーにアクセスして使用することは可能ですか? つまり、クラスをグローバルのある種のゴミ捨て場として扱います

ジェームズ

4

5 に答える 5

6

はい、それはまさにstaticクラス メンバーにとっての意味です。

struct Foo {
    static int x;
};

int Foo::x;

int main() {
    Foo::x = 123;
}
于 2009-10-28T21:45:40.743 に答える
3

一方、それが名前空間の目的です。

namespace toolbox
{
  void fun1();
  void fun2();
}

静的関数のクラスの唯一の用途は、ポリシー クラスです。

于 2009-10-29T08:04:51.420 に答える
2

要するに、はい。

つまり、静的メンバーはどこでも呼び出すことができ、クラス名を名前空間として扱うだけです。

class Something
{
   static int a;
};

// Somewhere in the code
cout << Something::a;
于 2009-10-28T21:46:14.910 に答える
0

はい:

class mytoolbox
{
public:
  static void fun1()
  {
    //
  }

  static void fun2()
  {
    //
  }
  static int number = 0;
};
...
int main()
{
  mytoolbox::fun1();
  mytoolbox::number = 3;
  ...
}
于 2009-10-28T21:45:28.680 に答える
-1

null ポインターを介して静的メソッドを呼び出すこともできます。以下のコードは機能しますが、使用しないでください:)

struct Foo
{
    static int boo() { return 2; }
};

int _tmain(int argc, _TCHAR* argv[])
{
    Foo* pFoo = NULL;
    int b = pFoo->boo(); // b will now have the value 2
    return 0;
}
于 2009-10-28T22:43:38.700 に答える