C++ наследование классов = Си++ наследование
Primary tabs
Полезно почитать данный урок
Наследование - это получение подобных черт и "умений" - а точнее - их копирование - потом потомком у родителя.
Механизмом такого копирования как раз и является наследование.
Не могу не упомянуть о том, что наследование в Си++ бывает разных видов.
Мы же здесь рассмотрим отношения между классами, описывающими разные части ПК (персонального компьютера, заметьте))- как в нашей задаче.
Далее я просто приведу подробно прокомментированный код - на ссылки выше+ этот код - это уже очень хорошо для "вменяемого старта".
Более полную версию программы ищите в рассматриваемой теме
/*для начала - демонстрация наследования в СИ++ ниже - примеры трёх уровней адсракции для описания процессоров точнее два адстрактных уровня - это процессор вообще и второй слой абстракци - это процессор семейства интел. последний же класс в жанном примере это уже конкретный процессор марки интел*/ class CPU // прародитель для классов, описывающих реализацию процессоров { public: CPU(char* design )// сигнатура - формат констурктора { CPU::design=design;} // реализация прямо внутри тела класса // об особенностях описания функции внутри класса читайте на этом же ресурсе char* design; // архитектура (пусть с точки зрения проргаммирования) }; /*далее пример паблик наследования этот класс обощённо описывает семейство процессоров Intel - это уже более конктретно*/ class Intel: public CPU // а вот уже некий конкретный проц от интел { public: Intel(char* ); // конструктор для класса данной можели опишем снаружи private: char * firm ; // приватное поле фирмы - потомки не смогут переопределить его }; // далее указываем базовый конструтор Intel::Intel(char* design):CPU(design) // обычно функция класса описывается снаружи - как и в этом случае { Intel::design=design; firm="Intel";// вот оно- неизменяемое значение для любого из семейства процессоров Intel // заметьте - если конфликта имён нет, то можно не указывать пространство имён /*по умолчанию функциям-членам класса доступны пространства имён класса а уж конструктор -как ни крути фукция-член класса*/ } /*далее опять пример паблик наследования ЭТО КЛАСС УЖЕ КОНКРЕТНЙ МОДЕЛИ ПРОЦЕССОРА*/ class Intel2000 : public Intel // а вот уже некий конкретный проц от интел { public: Intel2000(char*,int ); // конструктор для класса данной можели опишем снаружи private: int id; // пусть серийный номер будет не публичен }; Intel2000::Intel2000(char* design,int id):Intel(design) // конструктор для предыдущего класса // заметьте, что model CPU(model) - как и иные возможные параметры должен // фигурировать в сигнатуре базовог коструктора- /* именно на оснавании базового констуктора интерпретатор определит тип параметра - потому собственно для родительского конструтора и указывается только одно имя - без типа*/ { design="x86";// пусть эта модель соответсвует архитектуре x86 Intel2000::id=id; // запоминаем серийный номер - его передадим уже когда будем создавать класс }
Более полную версию программы ищите в рассматриваемой теме
- Log in to post comments
- 8738 reads