Вопрос

Можно ли получить доступ и использовать статические члены внутри класса без предварительного создания экземпляра этого класса?Т.е. относитесь к классу как к своего рода свалке для глобальных переменных.

Джеймс

Это было полезно?

Решение

Вы также можете вызвать статический метод через нулевой указатель.Код ниже будет работать, но, пожалуйста, не используйте его :)

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