Чтение онлайн

на главную

Жанры

Освой самостоятельно С++ за 21 день.

Либерти Джесс

Шрифт:

5. Объявите класс Vehicle (Машина) как абстрактный тип данных.

class Vehicle

{

virtual void Move = 0;

}

6. Если в программе объявлен класс ADT с тремя чистыми виртуальными функциями, сколько из них нужно заместить в производных классах, чтобы получить возможность создания объектов этих классов?

Если нужно произвести еще один абстрактный класс, то можно заместить одну или две чистые виртуальные функции базового класса, либо не замешать их вообще. В случае наследования обычного

неабстрактного класса необходимо заместить все три функции.

 Упражнения

1. Опишите класс JetPlane (Реактивный самолет), наследуя его от двух базовых классов — Rocket (Ракета) и Airplane (Самолет).

class JetPlane : public Rocket, public Airplane

2. Произведите от класса JetPlane, объявленного в первом упражнении, новый класс 747.

class 747 : public JetPlane

3. Напишите программу, производящую классы Саг (Легковой автомобиль) и Bus (Автобус) от класса Vehicle (Машина). Опишите класс Vehicle как абстрактный тип данных с двумя чистыми виртуальными функциями. Классы Саг и Bus не должны быть абстрактными.

class Vehicle

{

virtual void Move = 0;

virtual void Haul = 0;

};

class Car : public Vehicle

{

virtual void Move;

virtual void Haul;

}:

class Bus : public Vehicle

{

virtual void Move;

virtual void Haul;

};

4. Измените программу из предыдущего упражнения таким образом, чтобы класс Саr тоже стал ADT, и произведите от него три новых класса: SportsCar (Спортивный автомобиль), Wagon (Фургон) и Coupe (Двухместный автомобиль-купе). В классе Саr должна замещаться одна из виртуальных функций, объявленных в классе Vehicle, с вызовом функции базового класса.

class Vehicle

{

virtual void Move = 0;

virtual void Haul = 0;

};

class Car : public Vehicle

{

virtual void Move:

};

class Bus : public Vehicle

{

virtual void Move;

virtual void Haul;

}

class SportsCar : public Car

{

virtual void Haul;

}

class Coupe : public Car

{

virtual void Haul;

}

День 14

Контрольные вопросы 

1. Могут ли статические переменные-члены быть закрытыми?

Да. Поскольку они являются переменными-членами, то доступ к ним может управляться подобно доступу к любым другим переменным-членам. Если статическая переменная-член объявлена как закрытая, то доступ к ней можно получить только с помошью открытого статического метода класса.

2. Объявите статическую переменную-член.

static int itsStatic;

3. Объявите статическую функцию.

static int SomeFunction;

4. Объявите указатель на функцию, принимающую параметр типа int и возвращающую значение типа long.

long (*function)(int);

5. Измените указатель, созданный в задании 4, на указатель на функцию-член класса Саr.

long ( Car::*function)(int);

6. Объявите массив из десяти указателей, созданных в задании 5.

long ( Car::*function)(int) theArray [10];

 Упражнения

 1. Напишите короткую программу, объявляющую класс с одной обычной переменной-членом и одной статической переменной-членом. Создайте конструктор, выполняющий инициализацию переменной-члена и приращение статической переменной-члена. Затем объявите деструктор, который уменьшает на единицу значение статической переменной.

1: class myClass

2: {

3: public:

4: myClass;

5: ~myClass;

6: private:

7: int itsMember;

8: static int itsStatic;

9: };

10:

11: myClass::myClass:

12: itsMember(1)

13: {

14: itsStatic++;

15: }

16:

17:myClass::~myClass

18: {

19: itsStatic—-;

20: }

21:

22: int myClass::itsStatic = 0;

23:

24: int main

25: {}

2. Используя программный блок из упражнения 1, напишите короткую выполняемую

программу, которая создает три объекта, а затем выводит значения их перемен-

ных-членов и статической переменной-члена класса. Затем последовательно уда-

ляйте объекты и выводите на экран значение статической переменной-члена.

1: #include <iostream.h>

2:

3: class myClass

4: {

5: public:

6: myClass;

7: ~myClass;

8: void ShowMember

9: void ShowStatic;

10: private:

11: int itsMember;

12: static int itsStatic;

13: };

14:

15: myClass::myClass:

16: itsMember(1)

17: {

18: itsStatic++;

19: }

20:

21: myClass::~myClass

22: {

23: itsStatic--;

24: cout << "In destructor. ItsStatic: " << itsStatic << endl;

25: }

26:

27: void myClass::ShowMember

28: {

29: cout << "itsMember: " << itsMereber << endl;

30: }

31:

32: void myClass::ShowStatic

33: {

34: cout << "itsStatic: " << itsStatic << endl;

35: }

36: int myClass::itsStatic = 0;

37:

38: int main

39: {

40: myClass obj1;

41: obj1.ShowMember;

42: obj1.ShowStatic;

43:

44: myClass obj2;

45: obj2.ShowMember;

46: obj2.ShowStatic;

Поделиться:
Популярные книги

Пустоцвет

Зика Натаэль
Любовные романы:
современные любовные романы
7.73
рейтинг книги
Пустоцвет

Варлорд

Астахов Евгений Евгеньевич
3. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Варлорд

Мастер...

Чащин Валерий
1. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
6.50
рейтинг книги
Мастер...

Магнатъ

Кулаков Алексей Иванович
4. Александр Агренев
Приключения:
исторические приключения
8.83
рейтинг книги
Магнатъ

Я не князь. Книга XIII

Дрейк Сириус
13. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я не князь. Книга XIII

Жандарм

Семин Никита
1. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
4.11
рейтинг книги
Жандарм

Поход

Валериев Игорь
4. Ермак
Фантастика:
боевая фантастика
альтернативная история
6.25
рейтинг книги
Поход

Идеальный мир для Лекаря 10

Сапфир Олег
10. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 10

Идеальный мир для Социопата 4

Сапфир Олег
4. Социопат
Фантастика:
боевая фантастика
6.82
рейтинг книги
Идеальный мир для Социопата 4

Мама из другого мира. Дела семейные и не только

Рыжая Ехидна
4. Королевский приют имени графа Тадеуса Оберона
Любовные романы:
любовно-фантастические романы
9.34
рейтинг книги
Мама из другого мира. Дела семейные и не только

Младший сын князя

Ткачев Андрей Сергеевич
1. Аналитик
Фантастика:
фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Младший сын князя

Лучший из худших

Дашко Дмитрий
1. Лучший из худших
Фантастика:
фэнтези
попаданцы
5.25
рейтинг книги
Лучший из худших

Санек 2

Седой Василий
2. Санек
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Санек 2

Маленькая слабость Дракона Андреевича

Рам Янка
1. Танцы на углях
Любовные романы:
современные любовные романы
эро литература
5.25
рейтинг книги
Маленькая слабость Дракона Андреевича