C++ для начинающих: Наследование классов (ООП)

Наследование — ключевое понятие объектно-ориентированного программирования (ООП). Оно позволяет создавать новые классы (наследники) на основе существующих (базовых или родительских классов), наследуя их функции, поля и переменные.

Наследование: механизм и модификаторы доступа

Наследование — механизм, при котором один класс (базовый класс) служит основой для создания других классов (классов-наследников). Классы-наследники получают доступ к публичным (public) и защищённым (protected) членам родительского класса. Члены класса с модификатором доступа private остаются доступными только внутри родительского класса.

Примеры наследования и модификаторов доступа

Рассмотрим классы First и Second.

class First {
protected:
    int value;
};

class Second : public First {
public:
    Second(int val) {
        value = val;
        std::cout << value << std::endl;
    }
};

int main() {
    Second object(23);
    return 0;
}

Second наследует от First. Модификатор доступа protected у value в First обеспечивает доступ к ней в First и Second. Конструктор Second принимает значение, присваивает его унаследованной переменной value и выводит её на экран. Результат — вывод числа 23.

Наследование методов и использование конструкторов базового класса

Наследовать можно не только переменные, но и методы. Добавим метод setVal в First и вызовем его из Second.

class First {
protected:
    int value;
public:
    void setVal(int v) { value = v; }
    First(int val) : value(val) {}
};

class Second : public First {
public:
    Second(int val) : First(val) {
        std::cout << value << std::endl;
    }
};

class Third : public First {
public:
    Third(int val) : First(val) {
        std::cout << value << std::endl;
    }
};

int main() {
    Second object2(13);
    Third object3(15);
    return 0;
}

Конструктор Second вызывает setVal из First для присваивания value. Пример также демонстрирует множественное наследование от First (класс Third) и использование конструктора базового класса в конструкторах классов-наследников.

Наследование — мощный инструмент ООП, позволяющий создавать иерархию классов, избегая дублирования кода и улучшая структуру программы. Понимание принципов наследования упрощает разработку сложных программных систем.

Что будем искать? Например,программа