Класс "Строка"
Обязательные члены класса
- указатель на char - хранит адрес динамически выделенной памяти для размещения символов строки
- значение типа int - хранит длину строки в байтах
Обязательные методы
- конструктор без параметров
- конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом)
- конструктор, принимающий в качестве параметра символ (char)
- конструктор копирования
- деструктор
- получение символа из заданной позиции
Производный от "Строка" класс "Строка-идентификатор"
Строки данного класса строятся по правилам записи идентификаторов в СИ, и могут включать в себя только те символы, которые могут входить в состав Си-идентификаторов. Если исходные данные противоречат правилам записи идентификатора, то создается пустая СТРОКА_ИДЕНТИФИКАТОР.
Обязательные методы
- конструктор без параметров
- конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом)
- конструктор копирования
- деструктор
- подсчет количества цифр в строке
Переопределить следующие операции
- присваивание (=)
- объединение строк (&) - результатом является строка, содержащая все символы первой строки и символы второй строки, отсутствующие в первой
Производный от "Строка" класс "Битовая строка"
Строки данного класса могут содержать только символы '0' или '1'. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, БИТОВАЯ_СТРОКА принимает нулевое значение. Содержимое данных строк рассматривается как двоичное число. Отрицательные числа хранятся в дополнительном коде.
Обязательные методы
- конструктор без параметров
- конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом)
- конструктор копирования
- деструктор
- получение знака двоичного числа
Переопределить следующие операции
(длина строки результата равна длине большей из строк, в случае необходимости, более короткая битовая строка расширяется влево знаковым разрядом)
- присваивание (=)
- сумма по модулю 2 (^) - операция "исключающее или"
- операция (==) - проверка на равенство
Задание
Разработать иерархию классов по схеме с обязательной поддержкой заданных членов и методов.
Написать тестовую программу, которая:
- динамически выделяет массив указателей на базовый класс (до 6 шт.)
- в режиме диалога заполняет этот массив указателями на производные классы, при этом экземпляры производных классов создаются динамически с заданием начальных значений
- для созданных экземпляров производных классов выполняется проверка всех разработанных методов (в соответствии с вариантом задания), с выводом исходных данных и результатов на дисплей
- для конструкторов копирования каждого класса предусмотреть диагностическую печать количества его вызовов в заданное место дисплея, (рекомендуется использовать статические члены класса)