|
Программирование >> Расширенная версия языка c++
222 Самоучитель C+ + инициализировать переменную passengers, а конструктор ск() - переменную loadlt. #include <iostreaiu> , -.- \ using namespace std; Базовый класс автомобилей для разных типов class vehicle { int num wheels; int range; public: 1 . vehicle(int w, int r) , ! num wheels - w; range = r; - T 1 л .ltd t ...... void showvO , . ;.ui ! cou Число колес num wheels \n; cout range class car: public vehicle { int passengers; : public: . . , - . , , , ..j. вставьте здесь конструктор car() . .,. , j--- , void ShowO showv(}; cout passengers class truck: public vehicle { . int loadlimit; public: вставьте здесь конструктор void ShowO showv(); cout Пробег loadlimit \n ; I . , int main ( car 4, 0) ; truck t (30000, 12, 1200); cout легковая ыашина: . ...у;,. ,!;?. vttM -С т с. ShowO; ;<-№<г-, cout Хпгрузовик: \п ; . show (,); . , , . return 0; .. - Для конструкторов мг() и truck() объекты должны объявляться следующим образом: ..,/. ,... ... ..... и ca engers, wheels, range); . . , truck ob(loadlimit, wheels, range}; 7.4. Множественное наследование Имеются два способа, посредством которхх производный класс может наследовать более одного базового класса. Во-первых, производный класс может использоваться в качестве базового для другого производного класса, создавая многоуровневую иерархию классов. В этом случае говорят, что исходный базовый класс является косвенным (indirect) базовым классом для второго производного класса. (Отметьте, что любой класс - независимо от того, как он создан - может использоваться в качестве базового класса.) Во-вторых, производный класс может прямо наследовать более одного базового класса. В такой ситуации созданию производного класса помогает комбинация двух или более базовых классов. Ниже исследуются результаты, к которым приводит наследование нескольких базовых классов. Когда класс используется как базовый для производного торый, в свою очередь, является базовым для другого производного класса, конструкторы всех трех классов вызываются в порядке наследования. (Это положение является обобщением ранее исследованного принципа.) Деструкторы вызываются в обратном порядке. Таким образом, если класс В1 наследуется классов D1, a D1 - классом D2, то конструктор класса В1 вызывается первым, за ним конструктор класса D1, за которым, в свою очередь, конструктор класса D2. Деструкторы вызываются в обратном порядке. Если производный класс напрямую наследует несколько базовых классов, используется такое расширенное объявление: class яия прояЗ]зодног>о класса: сп доступа 1шябазового хлассз1, СП доступа 11мя ба.эово1го класса2, . . . , СП доступа шля б&зового-кл&ссаЯ it ... тало класса 224 . Самоучитель.C++ Здесь имя базового класса1... имя базового кдассаМ-тА&п& базовых классов, сп доступа- спецификатор доступа, который может быть разным у разных базовых классов. Когда наследуется несколько базовых классов, конструкторы выполняются слева направо в том порядке, который задан в объявлении производного класса. Деструкторы выполняются в обратном порядке. Когда класс наследует несколько базовых классов, конструкторам которых необходимы аргументы, производный класс передает эти аргументы, используя расширенную форму объявления конструктора производного класса: констр проязв кяасса. {список аср1) : имя базового класса! (спясокарг) , имя бааоаого класеа2 (сш1сох зрг}, . , имклассаЯ ( список арг) комструхтсра производного класса . Здесь ого кдасса1 .. огоклассаМ- имена базовых классов. Если производный класс наследует иерархии сов, каждый производный класс должен передавать предшествующему в цепочке базовому классу все необходимые аргументы. I. В этом примере производный класс наследует класс, производный от другого класса. Обратите внимание, как аргументы передаются по цепочке от класса D2 к классу В1. твенное наследование . i . # include <iostream> . using namespace std; ;г . - I !(*<:. f-i - I i; ,1 class Bl { . int a; 1= public:......... . , . , .. Bl (int x) { a = x; } , . , , . . in aO { return a; } Прямое наследование вого класса clas Dl: public Bl { int b; public: DKint X, in Bl (y) передача переменной у классу Bl
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |