C++ наследование классов = Си++ наследование

Полезно почитать данный урок

Наследование - это получение подобных черт и "умений" - а точнее - их копирование - потом потомком у родителя.
Механизмом такого копирования как раз и является наследование.

Не могу не упомянуть о том, что наследование в Си++ бывает разных видов.

Мы же здесь рассмотрим отношения между классами, описывающими разные части ПК (персонального компьютера, заметьте))- как в нашей задаче.

Далее я просто приведу подробно прокомментированный код - на ссылки выше+ этот код - это уже очень хорошо для "вменяемого старта".

Более полную версию программы ищите в рассматриваемой теме

/*для начала - демонстрация наследования в СИ++

ниже - примеры трёх уровней адсракции для описания процессоров
точнее два адстрактных уровня - это процессор вообще и второй слой абстракци - 
это процессор семейства интел.
последний же класс в жанном примере это уже конкретный процессор
марки интел*/

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; // запоминаем серийный номер - его передадим уже когда будем создавать класс
}

Более полную версию программы ищите в рассматриваемой теме