Читайте также: |
|
Классы
Реализация программы обычным способом (без использования указателей на методы класса)
Составить описание класса (KString) одномерных массивов строк, где каждая строка является элементом массива:
char *str[N] = {"\nНа холмах Грузии лежит ночная мгла;",
"Шумит Арагва предо мною.",
"Мне грустно и легко; печаль моя светла;",
"Печаль моя полна тобою." };
Начальное объявление и инициализация массива строк (str) осуществляется в функции main().
Предусмотреть:
● конструктор – KString(char **);, который в качестве параметра принимает указатель на массив str.
Массив str – это ничто иное, как массив указателей на строки. Каждый элемент такого массива – строка. Но в Си строка является, по существу, указателем на ее первый символ. Таким образом, каждый элемент в массиве строк в действительности является указателем на первый символ строки. Каждая строка хранится в памяти как строка, завершающаяся нулевым символом. Число символов в каждой из строк может быть различным. Таким образом, массив указателей на строки позволяет обеспечить доступ к строкам символов любой длины. Т.е., условно это выглядит так: Указатель на указатель является формой многочисленного перенаправления или цепочки указателей: В случае обычных указателей, указатель содержит адрес некоторого участка памяти, содержащего некоторое значение. В случае указателя на указатель, первый указатель содержит адрес второго, который в свою очередь содержит адрес участка памяти, содержащего некоторое значение. Переменная, являющаяся указателем на указатель, должна быть описана путем помещения двух звездочек перед именем. Например, следующее объявление сообщается компилятору, что balance – это указатель на указатель типа float: float **balance; Важно понимать, что balance – это не указатель на число с плавающей точкой, а указатель на указатель на вещественное число. |
● вывод на экран всего массива – метод void PrintText();;
● выполнения операций сцепления двух массивов (строк) с образованием нового массива (строки) – метод void CatStr2();;
● удаления элемента массива (строки) – метод void DelStr();;
● возможность обращения к отдельным строкам массива по индексам – метод void PrintStr();.
Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню (метод void Menu(KString);), позволяющее выбирать режим работы, реализованный соответствующим методом:
1 – Вывод текста;
2 – Вывод строки;
3 – Соединение строк;
4 – Удаление строки;
0 – Выход.
Реализация работы меню через указатели на методы класса
Объявление указателей на метод класса
Объявляется указатель на метод класса KString, который ничего не возвращает и не принимает никаких параметров:
void (KString::*ptf)();
Присвоение адреса указателю на метод
ptf = &KString::метод класса;
Определение массива указателей на методы класса
Объявляется и инициализируется массив указателей на методы класса KString, которые ничего не возвращают и не принимают никаких параметров:
void(KString::*ptf[4])() = {&KString::PrintText,&KString::PrintStr,
&KString::CatStr2,&KString::DelStr};
Вызов метода на выполнение через индекс в массиве указателей
(String.*ptf[i])();
где i – индекс указателя в массиве ptf;
String– объект класса KString, объявленный в функции main().
Дата добавления: 2015-09-01; просмотров: 67 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Задача 7.3. Страховые взносы на обязательное социальное страхование: определение облагаемой базы и расчет. | | | Задача 17 |