Ответ
В 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