функции с параметрами по умолчанию c
BestProg
Функции. Аргументы по умолчанию в функциях
Содержание
Поиск на других ресурсах:
1. Что такое аргументы по умолчанию? Каким образом объявляются аргументы по умолчанию? Общая форма объявления функции, содержащей аргументы по умолчанию
Аргумент по умолчанию – это такой аргумент функции, который программист может не указывать при вызове функции. Аргумент по умолчанию добавляется компилятором автоматически.
Чтобы использовать аргументы по умолчанию в функции, эта функция должна быть соответствующим образом объявлена. Аргументы по умолчанию объявляются в прототипе функции.
Общая форма объявления функции, которая содержит аргументы по умолчанию
2. Примеры объявления и использования функций, которые используют аргументы по умолчанию
Листинг объявления и использования функции следующий.
3. Может ли конструктор класса содержать параметры по умолчанию?
4. Пример использования конструктора и метода класса, которые получают аргументы по умолчанию
5. Какие преимущества дает использование аргументов по умолчанию в программах на C++?
Использование аргументов по умолчанию дает следующие преимущества:
6. Сколько раз можно задавать аргументы по умолчанию при объявлении функции? Пример
Во время объявления функции, аргументы по умолчанию задаются только один раз. Здесь возможны два случая. Первый, если функция имеет прототип и реализацию. Второй случай, если функция не имеет прототипа, а имеет только реализацию.
В первом случае (с прототипом), аргумент по умолчанию задается только в прототипе функции (а не в реализации). Во втором случае, аргумент по умолчанию задается в реализации функции, поскольку нет прототипа функции.
Пример. Заданы две функции:
В приведенном ниже коде демонстрируется применение функций, которые содержат аргументы по умолчанию. Важно: аргументы по умолчанию объявляются только один раз. В функции GetAreaCircle() аргументы по умолчанию объявляются в прототипе, поскольку эта функция имеет прототип. В функции GetVolumeSphere() аргументы по умолчанию объявляются в реализации, так как функция не имеет прототипа.
Лістинг программы, созданной по шаблону Win32 Console Application следующий:
7. В каком порядке должны следовать аргументы по умолчанию по отношению к обычным аргументам?
Аргументы (параметры) по умолчанию должны следовать после объявления обычных аргументов. Если объявить аргументы по умолчанию первыми, а за ними объявить обычные аргументы, то это будет ошибка.
Параметры (аргументы) функции по умолчанию.
Мы уже говорили о параметрах функции в отдельной статье. В этой – мы коротко разберемся, что такое параметры функции по умолчанию. Понять это несложно. Используют их в программировании в основном для удобства. Например нам надо нарисовать 5 одинаковых прямоугольников. Для этого мы можем написать функцию, которая принимает параметры по умолчанию. Рисует она, допустим, прямоугольник 10 на 10 символов. И этот символ всегда ‘@’ :
Хотя мы не передавали в функции никаких параметров при вызове, мы увидим пять одинаковых прямоугольников из символов ‘@’ на нашем экране. Функция использовала те значения, которые были присвоены параметрам по умолчанию при её определении.
Но это не всё. Даже если мы определили параметры по умолчанию – есть удобная возможность изменить их значения при вызове.
Допустим, надо нарисовать прямоугольник 5 символов в ширину. Остальные параметры (10 символов в высоту и сам символ ‘@’ ) нас устраивают. Тогда в функцию мы передаем только один параметр. Оставшиеся параметры функция возьмет из заданных по умолчанию.
Если же нам необходимо изменить только символ и в параметрах он указан последним, то придется прописать предшествующие параметры, даже если их значения нас устраивают.
Еще один момент, который касается определения параметров по умолчанию в заголовке функции. Определяться они должны справа налево. Например если из трех параметров необходимо задать только один по умолчанию, то он должен быть определен крайним справа.
На картинке параметр по умолчанию последний : char symb = ‘@’. Если их надо определить два – то точно так же это будут два крайних справа:
Если вы объявляете прототип функции – надо определить параметры по умолчанию именно в прототипе. В самом определении функции этого делать уже не надо. Пожалуй всё. Если что-то не понятно – спрашивайте в комментариях.
2 thoughts on “ Параметры (аргументы) функции по умолчанию. ”
Параметры по умолчанию обычно вот так просто не применяются… Они нужны если есть какие-то типичные параметры. Ну например…
Вы пишите читалку книг и по умолчанию масштаб 100%. Возможно у вас будет функция типа
load(string filename, /* всякие другие параметры */, scale = 100);
Т.е. понятно, что имя файла – обязательный параметр, а масштаб может и не указываться.
Пишите вы текстовый редактор. Кодировка по умолчанию UTF-8 (например).
Пишите штуку, которая сохраняет что-нибудь в XML формате (есть такой популярный формат) и по умолчанию используется XML версии 1.0.
Я параметры по умолчанию в своих функциях почти не использую. Сейчас поискал их в последнем своем проекте. Нашел только один пример:
void animation(QString texturename, bool randomStartFrame = false);
Тут функция запускает анимацию, в первом аргументе передается имя файла с анимацией. Если второй аргумент не указан, то по умолчанию анимация будет запущена начиная с первого кадра. Если же второй аргумент true – то анимация будет запущена со случайного кадра.
Как по мне, вот в этом случае с анимацией параметры по умолчанию тоже использовать не стоило бы… В любом случае для их оправданного использования нужно “нормальное поведения”, от которого можно отклониться заданием параметров.
в онлайн компиляторе не получается – выдает ошибку на заданный пример
Функции с параметрами по умолчанию c
Как вы уже знаете, C++ позволяет вам с помощью параметров передавать информацию в функции. Из урока 13 вы выяснили, что C++ также обеспечивает перегрузку функций, предусматривая определения, содержащие разное количество параметров или даже параметры разных типов. Кроме этого, в C++ при вызове функций можно опускать параметры. В таких случаях для опущенных параметров будут использоваться значения по умолчанию. Этот урок описывает как устанавливать значения по умолчанию для параметров функций. К концу данного урока вы освоите следующие основные концепции:
• C++ позволяет программам указывать для параметров значения по умолчанию.
• Значения по умолчанию для параметров указываются в заголовке функции при ее определении.
• Если вызов функции опускает значения одного или нескольких параметров, C++ будет использовать значения по умолчанию.
• Если вызов функции опускает значение определенного параметра, то должны быть опущены и значения всех последующих параметров.
Обеспечение значений по умолчанию для параметров упрощает возможность повторного использования функций (их использования несколькими программами).
ОПРЕДЕЛЕНИЕ ЗНАЧЕНИЙ ПО УМОЛЧАНИЮ
Обеспечить значения по умолчанию для параметров функции очень легко. Вы просто присваиваете значение параметру с помощью оператора присваивания С++ прямо при объявлении функции, как показано ниже:
void some_function(int size=12, float cost=19.95) //—->Значения по умолчанию
Следующая программа DEFAULTS. CPP присваивает значения по умолчанию параметрам a, b и c внутри функции show_parameters. Затем программа четыре раза вызывает эту функцию, сначала не указывая параметров вообще, затем указывая значение только для а, потом значения для а и b и, наконец, указывая значения для всех трех параметров:
void show__parameters (int a=1, int b=2, int c=3)
<
show_parameters();
show_parameters(1001);
show_parameters(1001, 2002);
show_parameters(1001, 2002, 3003);
>
Когда вы откомпилируете и запустите эту программу, на вашем экране появится следующий вывод:
а 1001 b 2002 с 3003
Как видите, если необходимо, функция использует значения параметров по умолчанию.
Правила для пропуска значений параметров
Если программа опускает определенный параметр для функции, обеспечивающей значения по умолчанию, то следует опустить и все последующие параметры. Другими словами, вы не можете опускать средний параметр. В случае предыдущей программы, если требовалось опустить значение параметра b в show_parameters, программа также должна была опустить значение параметра с. Вы не можете указать значение для а и с, опуская значение Ь.
Задание значений по умолчанию
Когда вы определяете функцию, C++ позволяет вам указать значения по умолчанию для одного или нескольких параметров. Если программа в дальнейших вызовах этой функции опускает один или несколько параметров, то функция будет использовать для них значения по умолчанию. Чтобы присвоить параметру значение по умолчанию, просто используйте оператор присваивания внутри определения функции.
Например, следующая функция payroll указывает значения по умолчанию для параметров hours и rate:
float payroll(int employ_id, float hours = 40, float rate = 5.50)
Когда программа опускает один параметр, она должна опускать все последующие параметры.
ЧТО ВАМ НЕОБХОДИМО ЗНАТЬ
Из данного урока вы узнали, что C++ позволяет вам указывать значения по умолчанию для параметров функции. Если программа опускает один или несколько параметров, функция использует значения по умолчанию. В следующих уроках, когда ваши программы начнут использовать объектно-ориентированное программирование на C++, вы будете применять параметры по умолчанию для инициализации различных переменных класса. Как вы уже знаете, переменная позволяет вам хранить значение определенного типа ( int, float и. т. д). В уроке 16 вы освоите, как хранить несколько значений одного и того же типа внутри массива. Например, ваша программа может хранить тестовые очки для 100 студентов или стоимость 50 акций. С помощью массивов хранить и использовать такие значения очень легко. До изучения урока 16 убедитесь, что вы освоили следующие основные концепции:
Урок №103. Параметры по умолчанию
Обновл. 13 Сен 2021 |
На этом уроке мы рассмотрим, что такое параметры по умолчанию в языке С++ и то, как их использовать.
Параметры по умолчанию
Параметр по умолчанию (или «необязательный параметр») — это параметр функции, который имеет определенное (по умолчанию) значение. Если пользователь не передает в функцию значение для параметра, то используется значение по умолчанию. Если же пользователь передает значение, то это значение используется вместо значения по умолчанию. Например:
Результат выполнение программы:
Параметр по умолчанию — это отличный вариант, когда функция нуждается в значении, которое пользователь может переопределить, а может и не переопределить. Например, вот несколько прототипов функций, для которых могут использоваться параметры по умолчанию:
Несколько параметров по умолчанию
Функция может иметь несколько параметров по умолчанию:
При следующих вызовах функции:
Values: 3 4 5
Values: 3 4 12
Values: 3 11 12
Values: 10 11 12
Правило №1: Все параметры по умолчанию в прототипе или в определении функции должны находиться справа. Следующее вызовет ошибку:
Правило №2: Если имеется более одного параметра по умолчанию, то самым левым параметром по умолчанию должен быть тот, который с наибольшей вероятностью (среди всех остальных параметров) будет явно переопределен пользователем.
Объявление параметров по умолчанию
Как только параметр по умолчанию объявлен, повторно объявить его уже нельзя. Это значит, что для функции с предварительным объявлением и определением, параметр по умолчанию объявить можно либо в предварительном объявлении, либо в определении функции, но не в обоих местах сразу. Например:
Значения аргументов функции по умолчанию
Язык С++ позволяет присваивать параметрам функции значения по умолчанию в том случае, когда при вызове функции не указываются параметры. Значения по умолчанию задаются синтаксически сходным образом с инициализацией переменных. Например, ниже объявляется функция f(), имеющая аргументом целую переменную, значением которой по умолчанию является величина 1:
Теперь функция f() может вызываться двумя способами, как показано ниже:
f(10); // явная передача значения
f (); // функция использует значение по умолчанию
В первом случае аргументу i будет присвоено значение 10. Во втором случае i получит значение по умолчанию, равное 1.
Аргументы по умолчанию в языке С++ позволяют программисту писать более простой код. Для того, чтобы охватывать множество ситуаций, часто функция содержит больше параметров, чем это необходимо при ее наиболее типичном использовании. Используя аргументы по умолчанию, можно указать только аргументы, которые отличаются от значений по умолчанию в каждой конкретной ситуации.
Чтобы лучше представить себе причины использования аргументов по умолчанию, рассмотрим следующий практический пример. Он содержит следующую полезную функцию xyout():
// выводит строку в позиции X, Y
void xyout (char *str, int x = 0, int у = 0)
<
if (!x) x = wherex ();
if (!y) у = wherey();
gotoxy(x, y);
cout
#include
void xyout(char *str, int x = 0, int у = 0)
<
if (!x) x = wherex ();
if (!y) у = wherey();
gotoxy(x, y);
cout
#include
void xyout(char *str, int x = 0, int у = 0)
int main()
<
xyout(«hello», 10, 10);
xyout(» there»);
xyout(«l like С++», 40); // по-прежнему на десятой строке
xyout(«This is on line 11.\n», 1, 11);
xyout(«This follows on line 12. \n»);
xyout(«This follows on line 13.»);
return 0;
>
/* Поскольку значения по умолчанию для х и у уже определены в прототипе xyout(), то они не могут быть повторены здесь */
void xyout (char *str, int x, int y)
<
if (!x) x = wherex();
if (!y) у = wherey();
gotoxy(x, y);
cout <
sloc = rloc = 0;
who = id;
cout