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