42: for (int i = 0; i 43: {
44: for (int j = 0; j< width; j++)
45: {
46: cout << "<<";
47: }
48: cout << "\n";
49: }
50: }
51:
52: // Выполняемая программа, демонстрирующая использование перегруженных функций
53: int main
54: {
55: // создание прямоугольника с размерами 30 и 5
56: Rectangle theRect(30,5);
57: cout << "DrawShape: \n";
58: theRect.DrawShape;
59: cout << "\nDrawShape(40,2): \n";
60: theRect.DrawShape(40,2);
61: return 0;
62: }
Результат:
DrawShape:
******************************
******************************
******************************
******************************
******************************
DrawShape(40,2):
****************************************
****************************************
Анализ:
Листинг 10.1 представляет собой усеченную версию проекта, рассмотренного в главе подведения итогов за первую неделю. Чтобы сократить размер программы, был удален блок контроля за соответствием значений заданным типам. Основной код был упрощен до простой выполняемой программы без показа пользовательского меню.Сейчас для нас важны строки 14 и 15, где происходит перегрузка функции DrawShape. Использование перегруженных вариантов этой функции показано далее, в строках с 30 по 50. Обратите внимание, что версия функции DrawShape без параметров обращается к варианту функции, содержащей два параметра, и передает в нее текущие значения переменных-членов. При программировании всегда следует избегать дублирования одинаковых программных кодов. В противном случае придется держать в памяти все созданные копии функций, чтобы при изменении программного кода в одной из них внести соответствующие изменения во все копии.
В строках программы с 52 по 62 создается прямоугольный объект и вызывается функция DrawShape. В первый раз в функцию не передаются параметры, а во второй раз передается два значения типа unsigned short integer.
Компилятор выбирает правильное объявление функции по количеству и типу заданных параметров. Дополнительно можно задать в этой же программе еще одно объявление функции DrawShape, в параметрах которой будет одно значение размера и переменная перечисления, позволяющая пользователю указать, что обозначает данный размер — ширину или длину прямоугольника.
Использование значений, заданных по умолчанию
Функции-члены класса, подобно обычным функциям, могут использовать значения, заданные по умолчанию. При объявлении функций-членов с аргументами, задаваемыми по умолчанию, используется уже знакомый вам синтаксис, как показано в листинге 10.2
Листинг 10.2. Использование значений, заданных по умолчанию
1: //Листинг 10.2. Использование значений, заданных по умолчанию
2: #include
3:
4: int
5: