Программирование >>  Расширенная версия языка c++ 

1 ... 186 187 188 [ 189 ] 190 191 192 ... 227


Приложение В. Ответы на вопросы и решения упражнений 573

class С: public A, public В { , : .

int ki public:

C{int с, int b, in) : A(a), B(b) { k = c;

2. Виртуальный базовый класс нужен тогда, когда производный класс наследует два (или более) класса, каждый из которых сам унаследовал один и тот же базовый класс. Без виртуального базового класса в последнем производном классе существовало бы две (или более) копии общего базового класса. Однако благодаря тому, что исходный базовый класс делается виртуальным, в последнем производном классе представлена только одна копия базового.

Проверка усвоения материала главы 7

1. ttinclude <iostreani>

using namespace

class building {

protected;

int floors; int rooms; double footage;

class house: public building { - . . ?

int bedrooms; ..

int bathrooms; -

public: -

house (int f, int r, doublet, int br, in h) { floors = f; rooms = r; footage = ft; bedrooms - br; bathrooms = bth;

void ShowO {

cout этажей: floors \n; cout комнат: rooms \n; cout метраж: footage Лп; cout спален: bedrooms \n ; cout ванн: bathrooms \n;



S74 Самоучитель C++

class office: public building I .

int phones;

int extinguishers; public:

office (int f, int r, double ft, int p, int ext) ( floors = f; rooms = r; footage = ft; phones = p; extinguishers = ext;

void ShowO (

cout этажей: floors \n; cout комнат: rooms Xn; . * cout метраж: footage \n;

cout телефонов: phones \n;

cout огнетушителей: extinguishers <:< \n;

1; . ..... .:c- :

int inainO \

hous 2, 12, 5000, 6, 4); . , I С

office b (4, 25 00, 30, 8) ;

cou Жилой дом: Хп ; . -

h ob. show ( ) ;

cout ХпОфис: Xn ;

oob.showi) ; *

return 0;

2. Если базовый класс наследуется ка ытый, открытые члены базового класса становятся открытыми членами производного класса, а закрытые члены базового класса остаются закрытыми. Если базовый класс наследуется как закрытый, все члены базового класса становятся закрытыми членами производного.

3 Hbt, объявленные как защищенные (protected), являются закрытыми членами базового класса, но могут наследоваться (и к ним можно иметь доступ) любым производным классом. При наследовании со спеДификатором доступа protected все открытые и защищенные члены базового класса становятся защищенными членами производного класса.

4. Конструкторы вызываются в порядке наследования. Деструкторы - в обратном порядке.

~ , , . . ..

5. ttinclude <iostream>

using namespace std;



Приложение вты на вопросы и решенияупражнений 575

class planet ( ..j

protected: -

double distance; расстояние в милях от Солнца

int revolve; полн1й оборот в днях

public:

planet (double d, int r) { distance = d; revolve = r; }

};

class earth: public planet (

double circumference; окружность орбиты public:

earth (double d, in : planet (d, r) {

circumference = 2 * distance * 3.1416;

void showO (

cou-:-< Расстояние от Солнцам < distance \п; cou.-- Полн оборот в revolve :< \п ;

cout Окружность орбиты: circumference \п

int main О

earth ob (93000000, 365); ob.show f) ;

return 0;

)

6. Для того чтобы программа стала верной, класс rized usc должны наследовать базовый класс \ehide как виртуальный.

Проверка усвоения материала в целом

1. Некоторые компиляторы не допускают использования инструкции switch во встраиваемых функциях. Такие функции автоматически трактуются компилятором как обычные функции.

2. Оператор присваивания является единственным оператором, который не наследуется. Причину этого понять легко. Поскольку в производном классе появятся члены, которых нет в базовом, то при перегрузке оператора = относительно базового класса в базовом классе ничего не будет известно о членах, появившихся в производном классе, и поэтому невозможно правильно копировать эти новые члены.



1 ... 186 187 188 [ 189 ] 190 191 192 ... 227

© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика