Р. ЛАФОРЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть13) онлайн
Описатель класса
Прежде всего рассмотрим заголовочный файл для VERYLONG. В нем содержится
спецификация одноименного класса.
Листинг 13.1. Заголовочный файл для VERYLONG
// verylong.h
// описатель класса сверхбольших целых чисел
#include <iostream>
#include <string.h> //для strlen()и т. п.
#include <stdlib.h> //для ltoa()
using namespace std;
const int SZ = 1000; //максимальное число разрядов
class verylong
{
private:
char vlstr[SZ]; //число как строка
int vlen; //длина строки verylong
verylong multdigit(const int) const; //прототипы
verylong mult10(const verylong) const;// скрытых
// функций
public:
verylong() : vlen(0) //конструктор без аргументов
{ vlstr[0]='\0'; }
verylong(const char s[SZ]) //конструктор (1 аргумент)
{ strcpy(vlstr, s); vlen=strlen(s); } //для строки
verylong(const unsigned long n) //конструктор (1 арг.)
{ //для long int
ltoa(n, vlstr, 10); //перевести в строку
strrev(vlstr); //перевернуть ее
vlen=strlen(vlstr); //найти длину
}
void putvl() const; //вывести число
void getvl(); //получить число от пользователя
verylong operator + (const verylong); //сложить числа
verylong operator * (const verylong); //умножить
};
В дополнение к данным в классе verylong имеются две скрытые функции.
Одна из них умножает сверхбольшое число на цифру, другая — умножает на 10.
Это внутренние функции, используемые при умножении сверхбольших чисел.
Можно заметить, что в классе три конструктора. Один сбрасывает сверх-
большое число в ноль, устанавливая в начале массива нуль-ограничитель и при-
сваивая длине строки нулевое значение. Второй инициализирует число строкой
(в которой оно хранится в обратном порядке), а третий — значением long int.
Метод putv1() выводит на экран значение числа, a getv1() — получает его от
пользователя. Ввести можно сколь угодно большое число в пределах 1000 раз-
рядов. Имейте в виду, что в этой программе нет никаких проверок на ошибки.
Если вы напишете вместо цифр какие-то символы, программа не отреагирует на
это, но и результат операции будет неправильный.
Два перегруженных оператора — «+» и «*» — выполняют, соответственно,
сложение и умножение. Можно использовать даже такие сложные выражения, как
alpha = beta * gamma + delta
для выполнения арифметических действий над данными типа verylong.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Схожі підручники
- Теорія з курсу Страхування
- Соціологія Навчально-методичний посібник для студентів всіх напрямків (частина 2)
- Товарознавство харчових продуктів функціонального призначення. Навчальний посібник (частина 1)
- методичка з курсу Гроші і кредит
- Реферат на тему « Особливості та недоліки оподаткування операцій з недержавного пенсійного забезпечення в Україні »
- Конспект лекцiй регiональна економiка
