4.4. Створіть відповідні конструктори саг() і truck(). Вони повинні передавати необхідні аргументи об'єктам класу vehicle. Крім цього конструктор саг() повинен при створенні об'єкта присвоювати начальне значення змінній passengers, а конструктор truck() - змінній loadlimit.
// Базовий клас автомобілів для різних типів
class vehicle {
int num_wheels;
int range;
public:
vehicle (int w, int r){num_wheels = w; range = r;}
void showv ( );};
class car: public vehicle {
int passengers;
public :
// вставте тут конструктор саг()
void show();
};
class truck: public vehicle {
int loadlimit;
public:
// вставте тут конструктор truck ()
void show ( );
};
Об'єкти повинні оголошуватися таким чином:
car ob (passengers, wheels, range);
truck ob(loadlimit, wheels, range);
4.5. Нехай базовий клас оголошується наступним чином:
class area_cl {
public:
double height;
double width;};
Створіть три похідні класу rectangle, isosceles і cylinder, які успадковують базовий клас агеа_c1. Кожний клас повинен містити в собі функцію area(), що повертає площу відповідно прямокутника (rectangle), рівнобедреного трикутника (isosceles) і площа поверхні циліндра (cylinder). Площа поверхні циліндра обчислюється по наступній формулі 2 * pi * R2 +2*pi * R * Н. Для ініціалізації змінних height і width використайте конструктор з параметрами.
4.6. Створіть вихідний базовий клас building для зберігання числа поверхів і кімнат у будинку, а також загальну площу кімнат. Створіть похідний клас house, що успадковує клас building і зберігає число ванних кімнат і число спалень. Крім цього створіть похідний клас office, що успадковує клас building і зберігає число вогнегасників і телефонів.
4.7. Використовуючи наступну ієрархію класів, створіть конструктор класу З так, щоб він присвоював начальне значення змінній k і передавав аргументи конструкторам А() і В().
class A {
int i;
public:
A(int a);};
class В {
int j;
public:
В (int a) { j = a; }};
class C: public A, public В {
int k;
public:
/* Створіть такий конструктор C(), щоб він присвоював начальне значення змінній k і передавав аргументи конструкторам А() і В() */
};
4.8-4.12. Нехай абстрактний базовий клас визначається такий чином:
abstract class IntArray {public: // конструктори explicit IntArray (int sz = DefaultArraySize); IntArray (int *array, int array_size); IntArray (const IntArray &rhs); // віртуальний деструктор virtual ~IntArray() ; virtual int& operator[](int index);//4.8 virtual void sort();//4.9 virtual int min() const;//4.10 virtual int max() const;//4.11 virtual int find (int value) const//4.12;protected: static const int DefaultArraySize = 12; void init (int sz; int *array); int _size; int *ia;};Створіть похідний клас, доопределите віртуальні функції, що відповідають своєму варіанту, і всі інші невідмічені функції.4.13-4.19. Кожна з наведених нижче абстракцій визначає ціле сімейство підвидів, як, наприклад, абстракція “транспортний засіб” може визначати “літак”, “автомобіль”, “велосипед”. Виберіть одне із сімейств і складіть для нього ієрархію підвидів. Приведіть приклад відкритого інтерфейсу для цієї ієрархії, включаючи конструктори. Визначте віртуальні функції. Напишіть код програми, що використає даний інтерфейс.(4.13) Крапка(4.14) Службовець(4.15) Фігура(4.16) Телефонний_номер(4.17) Рахунок_в_банку(4.18) Овочі(4.19) Транспортний засіб4.20-4.25. Визначте клас X, елементом якого є об'єкт класу Y. В обох класах Визначте конструктори й деструктори. У програмі продемонструйте створення об'єктів обох класів.(4.20) X(шахи) Y(шахове поле)(4.21) X(машина) Y(радіо)(4.22) X(квартира) Y(кімната)(4.23) X(бібліотека) Y(книга)(4.24) X(університет) Y(факультет)(4.25) X(комп'ютер) Y(процесор)
Для класу X перевантажте оператор перетворення об'єкта в рядок.