![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Аргументы функций по умолчаниюСодержание книги
Поиск на нашем сайте
Важное свойство С++ — возможность передачи аргумента в функцию по умолчанию. Оно используется, если при вызове функции необходима только часть параметров, а не все. Пример: функция, которая возвращает сумму четырех целых значений, подобная следующей: int sum(int a, int b, int с, int d) {return a + b + с + d;} Для вызова функции только с двумя аргументами (назовем их vl и v2) следует дополнить нулями два недостающих параметра: cout <<sum(v1, v2, 0, 0); Это ограничение невелико, но оно заставляет вас разбираться в документации по функции sum() для того, чтобы определить, какими значениями дополнить неиспользуемые параметры. Ошибочное употребление -1 или другого значения вместо параметров с и d, что вполне может допустить невнимательный программист, заставит функцию вернуть неправильную сумму. Аргументы функций по умолчанию дополняют необходимые значения для незаданных аргументов. Для объявления значения аргумента по умолчанию в прототипе функции завершите параметр функции знаком равенства и необходимым значением: int sum(int a, int b, int с = 0, int d = 0); Подобное объявление sum() позволяет вызывать ее не только с двумя, но и с большим числом аргументов -до четырех. Значения по умолчанию должны идти последними в списке параметров функции и могут появляться только в прототипе функции. Если не указаны аргументы для с и d, то они замещаются значениями по умолчанию, указанными в прототипе функции. Теперь допустимы следующие операторы: cout << sum(1, 2); // а == 1, b == 2, с == 0, d == 0 cout << sum(1, 2, 3); // а == 1, b == 2, с == 3, d == 0 cout << sum(1, 2, 3, 4); // а == 1, b == 2, с == 3, d == 4
Листинг 1.14 показывает более реальньй пример функции с аргументами по умолчанию. Программа центрирует введенную строку путем ее копирования в строковый буфер вывода, обрамленной одним или двумя символами заполнения. Можно использовать функцию Center() программы-примера для подготовки строк вида: - ***♦ Error: You goofed big time! **** <«««Press any key to continue»>>>>> Скомпилируйте CENTER.CPP из листинга 12.14 как EasyWin- или DOS-приложение. Запустите программу и введите строку, выводящуюся несколькими способами функцией Center(), которая заодно демонстрирует использование аргументов по умолчанию. Листинг 1.14. CENTER.CPP (использование аргументов функции по умолчанию)
2: #include <string.h> 3: 4: #define SIZE 128 5: 6: void Center(const char *instr, char *outstr, 7: int width = 0, char lFill = "-', char rFill = '-'); 8: 9: main() 10: { 11: char instr[SIZE]; // Вводимая строка 12: char outstr[SIZE]; // Выводимая строка 13: int length; // Длина строки в символах 15: cout «"Enter a string:"; 16: cin.getline(instr, SIZE / 2); 17: length = strlen(instr); 19: Center(instr, outstr); 20: cout «outstr «'\n"; 21: Center(instr, outstr, length + 8); 22: cout «outstr «"\ri'; 23: Center(instr, outstr, length + 16, '*', '*'); 24: cout «outstr «'\rf; 25: Center(instr, outstr, 78, '<", >); 26: cout «outstr «"\n"; 28: return 0; 29: } 31: // instr: Указатель на входную строку 32: //outstr: Указатель на выходную строку 33: // width: Окончательная желаемая длина выходной строки 34: // fill: Символ для заполнения выходной строки 36: void Center(const char *instr, char *outstr, 37: int width, char lFill, char rFill) 38: { 39: if (outstr == 0) // Выходная строка не должна быть нулевой 40: return; // Если нулевая - немедленное возвращение 42: if (instr == 0) { // Если входная строка нулевая, 43: *outstr = 0; // Выводим пустую строку 44: return; // и возвращаемся. 45: } 47: // Вычисление переменных для заполнения выходной строки 48: int len = strlen(instr); 49: if (width < len) 50: width = len; 51: int wd2 = (width - len) / 2; 52: 53: int i; // Индекс строки и управляющая переменная для цикла for 54: 55: for (i = 0; i < wd2; i++) 56: outstr[i] = lFill; 57: for (/*i = i*/; i < wd2 + len; i++) 58: outstr[i] = instr[i - wd2]; 59: for (/*i = i*/; i < width; i++) 60: outstr[i] = rFill; 61: outstr[i] = 0; // Завершаем строку нулем 62: }
void Center(const char *instr, char *outstr, int width = 0, char lFill = '-', char rFill = '-'); Первые два параметра — адреса входной и выходной строки. Входная строка объявлена с ключевым словом const для предохранения ее от изменения в теле функции. Последние три параметра определены со значениями по умолчанию, которые будут их инициализировать при пропуске соответствующих аргументов в операторе, в котором вызывается функция Center(). Как показано в программе, первый вызов функции должен быть только с двумя аргументами: Center(instr, outstr); Другие аргументы будут значениями по умолчанию, определенными в прототипе функции. В других вызовах Center в примере указывается один или более аргументов, переопределяющих значения по умолчанию. Каждое выражение порождает различные выходные строки с отцентрированной и обрамленной различными символами заполнения выходной строкой. Ссылки
int i = 1234; int *p = &i; объявляется целая переменная i, инициализированная значением 1234, и указатель на целое p, адресующий i. В соответствии с этими объявлениями следующие два оператора выводят значение i: cout << "i == " << i << '\n'; cout <<"i == " << *p <<'\n'; Выражение *p указывает компилятору, что следует использовать значение, адресуемое р. Использование указателей в качестве альтернативного способа доступа к переменным таит в себе опасность — если оператор изменил адрес, хранящийся в указателе, то этот указатель более не ссылается на то же значение. С++ предлагает альтернативу для более безопасного доступа к переменным через указатели. Объявив ссылочную переменную, вы создадите объект, который, как указатель, ссылается на другое значение, но, в отличие от указателя, постоянно привязан к своему alter ego ("второму я"). Ссылка на значение всегда ссылается на это значение. Ссылки, в основном, используются в качестве переменных, параметров функций и результатов функций.
|
||||||
Последнее изменение этой страницы: 2016-08-01; просмотров: 181; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.146.105.252 (0.006 с.) |