Ответ
В C++ методы могут иметь следующие спецификаторы, которые определяют их поведение и использование:
const— метод не изменяет состояние объекта (не модифицирует нестатические поля-члены). Позволяет вызывать метод для константных объектов.class Data { std::vector<int> values; public: // Константный метод доступа size_t size() const { return values.size(); } };volatile— метод может быть вызван дляvolatileобъекта. Используется редко, в основном при низкоуровневом программировании или работе с памятью, отображаемой на устройства.static— метод принадлежит классу, а не конкретному экземпляру. Не имеет доступа к указателюthisи может вызываться без создания объекта.class MathUtils { public: static double pi() { return 3.1415926535; } }; // Вызов: double p = MathUtils::pi();virtual— метод может быть переопределён в производных классах. Позволяет реализовать полиморфизм.override(C++11) — явно указывает, что метод переопределяет виртуальный метод базового класса. Компилятор выдаст ошибку, если сигнатура не совпадает.final(C++11) — запрещает дальнейшее переопределение метода в производных классах.noexcept(C++11) — указывает, что метод не генерирует исключений. Это позволяет компилятору проводить дополнительные оптимизации.class Base { public: virtual void process() const = 0; virtual ~Base() noexcept = default; }; class Derived : public Base { public: void process() const override final { /* логика */ } // final запрещает переопределение };