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
- 9181 reads