Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
01.11.2025
Размер:
2.14 Кб
Скачать
#include <iostream>
#include <locale>
using namespace std;

class animal {
    bool fur;
    void set_fur() { fur = true; }
protected:
    int weight;
    void set_weight(int w) { weight = w; }
public:
    int luck;
    void set_luck(int l) { luck = l; }
    bool is_lucky() { return (luck > 15000); }
};

class rabbit : public animal {
protected:
    bool hungry;
public:
    void set_luck(double d) { luck = d * 1000; }
    void set_luck() { luck = 10000; }
    bool is_hungry() { return hungry; }
};

// Если наследование protected: class rabbit : protected animal
class rabbit_protected : protected animal {
protected:
    bool hungry;
public:
    void set_luck(double d) { luck = d * 1000; }
    void set_luck() { luck = 10000; }
    bool is_hungry() { return hungry; }
};

int main() {
    setlocale(LC_ALL, "ru_RU.UTF-8");
    
    rabbit r;
    // rabbit_protected rp; // Для сравнения
    
    // Доступные функции для rabbit с public наследованием:
    r.set_luck(1000);        // public из rabbit
    r.set_luck();            // public из rabbit  
    r.set_luck(5.5);         // public из rabbit
    r.is_lucky();            // public из animal
    // r.luck = 10;          // public из animal
    
    // НЕ доступные:
    // r.set_fur();          // private в animal
    // r.set_weight(50);     // protected в animal
    // r.weight = 60;        // protected в animal
    // r.hungry = true;      // protected в rabbit
    
    cout << "Для rabbit с public наследованием доступны:" << endl;
    cout << "- set_luck() (все перегрузки)" << endl;
    cout << "- is_lucky()" << endl;
    cout << "- luck (поле)" << endl;
    
    cout << "\nДля rabbit с protected наследованием НЕ доступны:" << endl;
    cout << "- Все public члены animal становятся protected" << endl;
    cout << "- В main доступны только методы самого rabbit" << endl;
    
    return 0;
}
Соседние файлы в папке Лаба6