/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/cpp/cpp-506-14-001/main.cpp
42 строки
2 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
#include <string> #include <iostream> class Warrior { private: std::string name; int level; static int count; // статическое поле (общее для всех) public: // Конструктор с инициализацией (список инициализации — ВАЖНО!) Warrior(const std::string& name, int level = 1) : name(name), level(level) { // ← список инициализации count++; } // Виртуальный деструктор (ОБЯЗАТЕЛЬНО для полиморфизма!) virtual ~Warrior() { // virtual — для корректного удаления count--; } // Геттеры (константные методы — не меняют объект) std::string getName() const { return name; } int getLevel() const { return level; } // Статический метод static int getCount() { return count; } // Виртуальный метод (для переопределения) virtual void attack() const { std::cout << name << " атакует! (ур. " << level << ")" << std::endl; } // Чисто виртуальный метод (как abstract в Java) virtual void specialAbility() const = 0; // = 0 → абстрактный метод }; // Инициализация статического поля (ОБЯЗАТЕЛЬНО вне класса!) int Warrior::count = 0; // Warrior абстрактен (есть pure virtual specialAbility) — напрямую // Warrior w("Имя", 1); // ошибка компиляции; нужен производный класс, например Knight