Простое наследование. Конструкторы и деструкторы при наследовании

Страницы работы

Фрагмент текста работы

пока в производном классе не определена операция присваивания с прототипом

Heir& operator=(const Base& M);

и со следующим определением

Heir& Heir::operator=(const Base& M)

{

this -> operator=(M); //вызов родительской операции

return *this;

}

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

1.5. Закрытое наследование.

Закрытое наследование – наследование реализации: класс реализован посредством класса. Здесь принцип подстановки не соблюдается, поэтому закрытое наследование применяется в тех случаях, когда требуется иметь функциональность базового класса. Но не нужны ни копирование, ни присваивание.

При закрытом наследовании все элементы класса – наследника становятся приватными и недоступными программе – клиенту.

class Base

{

public:

void f1();

void f2();

};

class Heir: private Base

{

//наследуемые функции - члены недоступны

};

Для класса Heir нужно заново реализовывать функции – члены, например

class Heir: private Base

{

public:

void f1()

{

Base::f1();

}

void f2()

{

Base::f1();

}

};

Можно открыть функции – члены базового класса с помощью using – объявления:

using <имя базового класса>::<имя функции - члена>;

Закрытое наследование позволяет ограничивать предоставляемую производным классам функциональность.

Функции – члены класса имеют неограниченный доступ ко всем элементам класса

2. ЗАДАНИЕ НА ПРОГРАММИРОВАНИЕ

Вариант №1.

Создать базовый класс Car (машина), характеризуемый торговой маркой. Числом цилиндров, мощностью. Определить методы переназначения и изменения мощности. Создать производный класс Lorry (грузовик), характеризуемый грузоподъемностью кузова. Определить функции переназначения марки и изменения грузоподъемности.

Вариант №2.

Создать объект Liquid (жидкости), имеющий поля названия и плотности. Определить методы переназначения и изменения плотности. Создать производный объект Alcohol (спирт), имеющий крепость. Определить методы переназначения и изменения крепости.

Вариант №3.

Создать объект Pair (пара чисел); определить методы изменения полей и вычисления произведения чисел. Определить производный объект Rectangle (прямоугольник) с полями-сторонами. Определить методы вычисления периметра и площади прямоугольника.

Вариант №4.

Создать объект Man (человек), с полями: имя, возраст, пол и вес. Определить методы переназначения имени, изменения возраста и изменения веса. Создать производный объект Student, имеющий поле года обучения. Определить методы переназначения и увеличения года обучения.

Вариант №5.

Создать объект Triad (тройка чисел); определить методы изменения полей и вычисления суммы чисел. Определить производный объект Triangle с полями-сторонами. Определить методы вычисления углов и площади треугольника.

Вариант №6.

Создать объект Triangle с полями-сторонами. Определить методы изменения сторон, вычисления углов, вычисления периметра. Создать производный объект Equilateral (равносторонний), имеющий поле площади. Определить метод вычисления площади.

Вариант №7.

Создать объект Triangle с полями-сторонами. Определить методы изменения сторон, вычисления углов, вычисления периметра. Создать производный объект RightAngled (прямоугольный), имеющий поле площади. Определить метод вычисления площади.

Вариант №8.

Создать объект Pair (пара чисел); определить методы изменения полей и вычисления произведения чисел. Определить производный объект RightAngled с полями-катетами. Определить методы вычисления гипотенузы и площади треугольника.

Вариант №9.

Создать объект Triad (тройка чисел); определить методы увеличения полей на 1. Определить производный объект Date с полями: год, месяц и день. Переопределить методы увеличения полей на 1 и определить метод увеличения даты на n дней.

Вариант №10.

Создать объект Triad (тройка чисел); определить методы увеличения полей на 1. Определить производный объект Time с полями: час, минута и секунда. Переопределить методы увеличения полей на 1 и определить метод увеличения даты на n секунд и минут.

Вариант №11.

Создать объект Pair (пара целых числе) с операциями проверки на равенство и перемножения полей. Реализовать операцию вычитания пар по формуле . Создать производный объект Rational; определить новые операции сложения  и деления ; переопределить операцию вычитания .

Вариант №12.

Создать базовый объект Triad (тройка чисел) с операциями сложения

Похожие материалы

Информация о работе

Предмет:
Право
Тип:
Отчеты по лабораторным работам
Размер файла:
106 Kb
Скачали:
0