Ключевое слово static можно использовать в трех местах. Один из них заключается в объявлении структуры / класса, когда этот контекст означает, что метод является методом класса, а не методом экземпляра. Это означает, что этот метод вызывается напрямую, и вам не нужен экземпляр. С помощью этого статического метода вы не можете получить доступ к переменным экземпляра.
В MyClass.h
struct MyClass
{
static void ThreadEntryStatic();
void Begin();
};
В MyClass.cpp
void MyClass::ThreadEntryStatic()
{
}
void MyClass::Begin()
{
CreateThread(.., MyClass::ThreadEntryStatic, ...);
}
Второй случай, когда используется ключевое слово static, находится в области видимости файла, где вы не хотите, чтобы видимость объявленной переменной была видимой вне файла. Для этого вы также можете использовать анонимное пространство имен.
Третий случай использования статического ключевого слова находится в области действия метода, и значение сохраняется между выполнениями функции (и инициализируется с присваиванием в первый раз).