문제

해당 클래스의 인스턴스를 먼저 만들지 않고 액세스에 액세스하고 클래스 내 정적 멤버를 사용할 수 있습니까? 즉, 클래스를 글로벌을위한 일종의 투기지로 취급하십시오.

제임스

도움이 되었습니까?

해결책

널 포인터를 통해 정적 메소드를 호출 할 수도 있습니다. 아래 코드는 작동하지만 사용하지 마십시오 :)

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;
}

다른 팁

예, 정확히 무엇입니다 static 클래스 멤버를위한 수단 :

struct Foo {
    static int x;
};

int Foo::x;

int main() {
    Foo::x = 123;
}

반면에, 그것이 네임 스페이스의 것입니다.

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

정적 기능 클래스의 유일한 사용은 정책 클래스에 대한 것입니다.

요컨대, 그렇습니다.

길고 정적 멤버는 어디서나 호출 될 수 있으며 클래스 이름을 네임 스페이스로 취급합니다.

class Something
{
   static int a;
};

// Somewhere in the code
cout << Something::a;

예:

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

  static void fun2()
  {
    //
  }
  static int number = 0;
};
...
int main()
{
  mytoolbox::fun1();
  mytoolbox::number = 3;
  ...
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top