Что такое статический метод класса в C++?

«Что такое статический метод класса в C++?» — вопрос из категории ООП, который задают на 25% собеседований C/C++ Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В C++ статический метод класса — это функция-член, которая принадлежит самому классу, а не конкретным экземплярам (объектам). Он вызывается через имя класса (ClassName::method()) и не имеет доступа к указателю this, поэтому не может напрямую работать с нестатическими полями и методами.

Ключевые особенности:

  • Область видимости: Существует в области видимости класса, но не привязан к объекту.
  • Доступ: Может обращаться только к статическим членам класса (статическим полям и другим статическим методам).
  • Использование: Часто применяется для фабричных методов, утилитарных функций или операций, не требующих состояния объекта.

Пример:

class Logger {
private:
    static int messageCount; // Статическое поле
public:
    static void log(const std::string& msg) { // Статический метод
        std::cout << "[" << messageCount++ << "] " << msg << std::endl;
    }
};

int Logger::messageCount = 0; // Определение статического поля

int main() {
    // Вызов без создания объекта
    Logger::log("Application started");
    Logger::log("Processing data");
    return 0;
}

Вывод:

[0] Application started
[1] Processing data