Создать иерархию типов – файл для чтения, файл для записи и файл для чтения и записи

У меня есть 4 задачки,первые 3 я сделал,осталась только эта:

Создать иерархию типов – файл для чтения, файл для записи и файл для чтения и записи. Классы должны иметь конструкторы, включая конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввод из потока.

Не могу понять какой вид должна иметь эта иерархия и какая структура программы.Подскажите пожалуйста


Ответы (1 шт):

Автор решения: DmitryK

Похоже эта задача больше на развитие креативного мышления. :) Ну и на закрепление материала по наследованию.
Ну один из вариантов (классический пример на наследование):
классическая иерархия

Здесь делаете class myfile полностью виртуальным, т.е. его объекты нельзя создавать. В нем держите дескриптор потока или указатель на файл, если будете работать с файловыми функциями, а не потоками. В class imyfile определяете только оператор ввода operator>> - это будет файл только для чтения. В class omyfile определяете только оператор выводаoperator<< - это будет файл только для записи. Ну и от них наследуется class iomyfile - который от предков получит и ввод и вывод в файл.

Другой вариант - когда есть class iomyfile и от него наследуют imyfile и omyfile.
иерархия 2
Базовый класс может всё, а наследники - какое-то подмножество его функционала. Так вы ограничиваете функционал базового класса - по сути создаете интерфейсы.
В любом случае это больше демонстрационные примеры.

→ Ссылка