Как происходит вызов функции и возврат из нее
Обновлено: 28.06.2024
На уроке будут рассмотрены Javascript функции, как пользовательские, так и встроенные; способы создания и вызов функций; локальные и глобальные переменные в функции, а также рекурсивный вызов функции в javascript
Встроенные Javascript функции
В javascript достаточно много функций, встроенных в синтаксис языка. Рассмотрим одну из них.
eval(строка)
Функция eval(строка) вычисляет выражение в указанной строке (в качестве параметра); выражение должно быть составлено по правилам языка JavaScript и не содержать тегов HTML:
Рассмотрим пример использования функции eval:
let y = 5; // значение у равно 5 let x = "if (y==5) y*2-3"; // значение х равно строке символов let rezult = eval(x); // rezult равно 7
Задание js4_1. В скрипте запрашивать у пользователя ввести в диалоговое окно ввода математическое выражение, затем вычислить значение данного выражения и результат вывести в диалоговом окне.
Пользовательские Javascript функции
Пользовательские функции прежде всего необходимы в ситуации, когда в разных частях программы необходимо выполнять одни и те же действия несколько раз. В таком случае повторяемые операторы оформляются в виде функции, к которой можно обращаться и вызывать ее выполнение из разных частей программы.
- Функция в роли процедуры. Если функция выполняет какие-либо действия и не возвращает значение:
Синтаксис объявления (создания) функции:
Другой вариант создания функции — Function Expression (Функциональное Выражение):
Вызов функции:
В javascript вызов функции в роли процедуры происходит следующим образом:
имя_функции (аргументы); // с аргументами имя_функции (); // без аргументов
Вызов функции:
В javaScript вызов функции, возвращающей значение, происходит, например, следующим образом:
let a = имя_функции (аргументы); alert(a); // 1-й способ let b = a + a; // 2-й способ
То есть значение нужно либо вывести на экран, либо можно использовать в дальнейших выражениях.
Как видно из примера, после return функция действительно завершает свою работу. Поэтому оператор alert("2") выполняться уже не будет.
let a=sayHello(); alert(a);
Вызов функции происходит через присваивание. Вызов в данном примере можно также организовать так: alert(sayHello()); , но это не рекомендуемый вариант.
Важно: Таким образом, директива return указывает на возвращаемое значение функции, которое будет передано переменной при следующей форме вызова:
Примерный фрагмент кода для одного из способов:
- Для чего используются функции?
- Объясните в чем разница использования функции в роли процедуры и функции с классическим оформлением?
- Опишите синтаксис вызова функции в роли процедуры.
- Опишите синтаксис вызова функции с классическим оформлением.
- Для чего служит директива return ?
Javascript функции с параметрами (аргументами) и возврат значений
Рассмотрим подробнее использование инструкции return в функции javascript на двух примерах. Кроме того, рассмотрим использование в Javascript функции с параметрами (аргументами).
- Объявите функцию sayHello. В скобках аргументов функции укажите аргумент с именем userName:
-
Объявите функцию sayHello. В скобках аргументов функции укажите аргумент с именем userName:
. let a = sayHello("Вася"); alert(a);
Важно: Обратите внимание на разницу между вызовом функции без директивы return и с директивой: в первом случае функция вызывается как оператор, возвращая значение undefined ; во втором случаем функция вызывается через присваивание, либо участвуя в выражениях (см. ниже)
У функций могут быть необязательные аргументы:
function f(x, y = 3) < return x + y; >f(2); // 5
Все способы создания пользовательских функций
//обязательным является только последний аргумент – тело функции let a1 = new Function('x', 'y', 'return x + y');
let a1 = new Function('return "hello"');
Вызов функций во всех случаях будет:
let a = a1(3, 4); alert(a); // вывод значения на экран
Использование выражений с функциями
Обычное использование javascript функции:
Функция как составная часть выражения:
Во второй функции ( add() ) используется выражение, ссылающееся на первую функцию ( sum() , в 11-й строке).
Задание js4_6. Создать функцию, возвращающую наибольшее из трех чисел. Аргументами функции являются сами числа.
function findMax(a,b,c) < . return . >let max = . .
(только для функций, которые возвращают результат):
Рассмотрим примеры для функции:
function plRectangle(width, height)
Варианты выражений:
⇒ Вызов функции как часть выражения:
S3 = 0.5 * plRectangle(a, b);
⇒ Вызов функции в логических выражениях:
if (plRectangle(a, b) > plRectangle(c, d)) alert("Первый прямоугольник больше второго");
⇒ Вызов javascript функции в качестве параметра другой функции:
let х = "25рх"; let у = 12; let S = plRectangle(parselnt(x), у);
Задание js4_7. Используйте функцию для модернизации примера с окончанием слова про количество ворон. Откройте файл с выполненным заданием про ворон. Необходимо вызывать функцию с параметром – количество ворон.
- Что такое аргументы функции и где они указываются?
- Может ли на месте аргумента функции находиться вызов другой функции?
Область видимости переменных. Javascript глобальные и локальные переменные в функции
Область видимости переменной — область кода, в котором переменная доступна для использования.
-
Глобальные переменные — создаются на уровне сценария и сохраняются до конца сценария; — объявляются до описания javascript функции:
let a = 1; function . .
for (let i=1;i — явно объявляются в теле javascript функции;
Задание js4_9. Дополните код согласно заданию:
Создать 2 переменные глобальной и локальной области видимости (то есть внутри функции func ) с именами: global , local .
Переменной global присвоить текст “Привет, ”, а local — “Мир”. Используя переменные, выведите их значения дважды: в основной программе и в теле функции.
function func() < >func();
Область видимости переменных
Рассмотрим конкретные примеры области видимости переменных в javascript при использовании глобальных и локальных переменных.
let S = 2; // Глобальная переменная S function plRectangle(width, height) < let S = width * height; return S // Локальная переменная S >z = plRectangle(2, 3); alert(z); alert(S);
Пример: Значение z равно 6, а значение S осталось равным 2, то есть значению глобальной переменной, определенной во внешней программе
function plRectangle(width, height) < let s = width * height; // аргументы всегда локальны width = width + 10; return s >width = 2; height = 3; z = plRectangle(width, height); alert(z); alert(width);
function Plrectangle(width, height) < S = width * height; //глобальная переменная return S >z = Plrectangle(2, 3); S=2; // изменяем глобальную переменную alert(z); alert (S);
Пример: Значение z равно 6, а значение S равно 2, то есть значению измененной глобальной переменной, определенной во внешней программе
function plRectangle(width, height) < let S = width * height; let x = 17; return S >z = plRectangle(2,3); alert(z); alert(x); // не определена во внешней программе alert (S); // не определена во внешней программе
Пример: Значение z равно 6; переменная S во внешней программе не определена; переменная х во внешней программе не определена
- Какова разница между локальными и глобальными переменными?
- Зачем в программировании существует необходимость деления переменных на локальные и глобальные?
Рекурсивная функция javascript
Важно: В информатике и программировании, а, соответственно, и в javascript, рекурсия — это вызов функции из самой же функции, т.е. функция в функции
Бывают также косвенная или сложная рекурсия, когда функция вызывается не непосредственно из самой себя, а из вложенной в нее функции: например, функция A вызывает функцию B , а функция B — функцию A . Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.
- начальное условие (известное значение для переменной, отправной момент рекурсии);
- рекурсивное правило;
- условие окончания рекурсии.
Рекурсия javascript рассмотрена ниже на примере возведения числа в степень.
Для начала рассмотрим итерационный вариант возведения в степень, т.е. с использованием цикла:
Пример: Используя функцию, необходимо вычислять возведение числа в степень. Выполнить задание, используя цикл for
let chislo,stepen; function degree(chislo,stepen) < for(let result = 1; stepen >0; stepen--) < result *= chislo; >return result; > document.write(degree(2,4)); // выводит 16
Пример: Выполнить возведение числа в степень через рекурсию. Оба значения запрашивать у пользователя. Выдавать результат в виде:
- Объявите глобальные переменные для числа и степени и запросите их:
let chislo,stepen; chislo = parseInt(prompt('число: ')); stepen = parseInt(prompt('степень: '));
function degree(chislo,stepen) < if(stepen) < … >return 1; // если степень равна нулю то возвращаем 1 >
document.write(chislo,' в степени ', stepen, ' = ', degree(chislo,stepen));
function f(counter) < counter--; document.write(counter + "
"); if (counter != 0) f(counter); document.write(counter + "
"); > f(2);
Задание js4_12. Вычислить факториал числа с использованием рекурсии, беря за образец пример вычисления факториала итерационным методом
let m = 2; x = factorial(m); document.write(x); function factorial(n)< if(n
- Что такое рекурсия?
- Назовите основные условия организации рекурсии, как вы их понимаете?
Стрелочные функции или лямбда выражения в javascript
Пример стрелочной функции с одним аргументом:
let f = x => x + 1; alert(f(5))
Расшифровываем так:
функция f равна значению x, такое, что x = x + 1.
То есть в результате в окно выведется 6.
Пример стрелочной функции с двумя аргументами:
let g = (x, y) => x + y; alert(g(5,3))
Пример: Написать стрелочную функцию для вычисления факториала числа. Функция должна быть рекурсивной.
- Назовем функцию factorial.
- Определим рекурсивные правила:
- Теперь данные правила опишем в самой рекурсивной функции в скрипте. Для написания функции будем использовать тернарный оператор:
let factorial = n => (n > 0) ? n * factorial(n-1) : 1;
Пример: Написать стрелочную функцию для вычисления первых n чисел ряда Фибоначчи. Функция должна быть рекурсивной.
- Назовем функцию fib.
- Определим рекурсивные правила:
- Теперь данные правила опишем в самой рекурсивной функции в скрипте. Для написания функции будем использовать тернарный оператор:
let fib = n => (n > 2) ? fib(n-1) + fib(n-2) : 1;
Задание js4_14:
Используя стрелочную функцию, создайте последовательность 1 3 9 27 81 243 729 2187 6561 19683
- Какие функции называются стрелочными функциями?
- Есть ли разница между стрелочными функциями и лямбда выражениями в javascript?
- Каков синтаксис стрелочных функций?
Рубрики:
В вашем задание ответ неправильный. Ответ будет 6 и 6. Попробуйте сами запустить этот код function Plrectangle(width, height) S = width * height;
return S
>
S=2;
z = Plrectangle(2, 3);
alert(z);
alert (S);
Пример: Значение z равно 6, а значение S осталось равным 2, то есть значению глобальной переменной, определенной во внешней программе
admin
Да нет, всё верно
Dmitriy
Всё же не верно. S — глобальная переменная, и в теле функции S изменяется. Результат 6 и 6. Чтобы было верно, надо в в функции поставить var S=…
По необходимости указания в программе можно выделить 2 группы функций: функции, описания которых в программе не указываются, и функции, описания которых должны быть указаны в программе. Описания стандартных функций в программе не указываются. Описания пользовательских функций должны присутствовать в программе обязательно. Описания специальных функций, если они используются, также указываются в программе.
Формат описания функции
Описание функции состоит из двух основных частей - заголовка функции и тела функции.
Заголовок функции содержит указание типа возвращаемого значения, название функции и список формальных параметров, обрамлённый круглыми скобками. Если функция не должна возвращать никакого значения, то её тип обозначают void.
Тело функции может состоять из простых и/или составных операторов, обращений к другим функциям и заключается в фигурные скобки.
Список параметров указывается через запятую. Количество параметров, передаваемых в функцию, ограничено и не может превышать 64. В качестве формальных параметров в заголовке функции могут быть указаны только переменные (но не константы, вызовы других функций или выражения). Количество, тип и порядок упоминания передаваемых параметров в вызове функции должны совпадать с количеством, типом и порядком упоминания формальных параметров, указанных в описании функции (исключение составляет вызов функции, имеющей параметры со значением по умолчанию):
Параметры, передаваемые в функцию, могут иметь значения по умолчанию, которые задаются константами соответствующего типа:
Если в вызове функции, имеющей умолчательные значения, указаны фактические параметры, то к расчёту в функции будут приняты значения фактических параметров. Если в вызове функции, имеющей умолчательные значения, не указаны какие-то фактические параметры, то к расчёту в функции принимаются соответствующие значения по умолчанию.
Специальные функции также могут иметь параметры. Однако при вызове этих функций клиентским терминалом никакие параметры извне переданы не будут, а будут использованы умолчательные значения. Специальные функции могут быть вызваны из любого места модуля по общим правилам, наравне с другими функциями.
Правила исполнения функции
Место в программе для описания функции:
Описание функции должно находиться в программе обособленно, за пределами любых других функций (т.е. не внутри какой-либо другой функции, а снаружи). |
Вызванная для исполнения функция исполняется в соответствии с кодом, составляющим тело функции. |
Формат оператора return
Возвращаемое функцией значение - это значение параметра, указанного в скобках оператора return. Оператор return состоит из ключевого слова return, Выражения, обрамлённого круглыми скобками, и заканчивается знаком ; (точка с запятой). Полноформатный оператор return:
Правило исполнения оператора return
Оператор return прекращает исполнение ближайшей внешней функции и передаёт управление в вызывающую программу в соответствии с правилами, определёнными для вызова функции. Значением, возвращаемым функцией, является значение выражения, указанного в операторе return. Если тип значения параметра, указанного в операторе return, не совпадает с типом возвращаемого значения, указанным в заголовке функции, то значение приводится к типу возвращаемого значения, указанному в заголовке. |
Пример использования оператора return, возвращающего значение:
В функциях с типом возвращаемого значения void необходимо использовать оператор return без выражения:
Пример использования оператора return без возврата значения:
В описании функции допускается отсутствие оператора return. В этом случае функция автоматически завершает работу, если (в соответствии с исполняемым алгоритмом) в теле функции исполнился последний оператор. Пример описания функции, в которой не указан оператор return:
В данном случае функция завершит работу в момент окончания исполнения оператора цикла for. Последним движением при исполнении функции будет проверка условия в операторе цикла. Как только Условие в заголовке оператора цикла for станет ложным, управление будет передано за пределы оператора цикла. Но в связи с тем, что оператор цикла является последним исполняемым оператором в теле функции My_function (), пользовательская функция завершит работу, а управление будет передано за пределы функции, именно в то место, откуда функция была вызвана на исполнение.
Аннотация: В лекции рассматриваются особенности объявления и определений функций, способов задания формальных параметров и типов возвращаемых данных, вызов функций, передача аргументов по значению и по ссылке.
Теоретическая часть
Принципы программирования на языке С основаны на понятии функции. Например, к системным функциям относятся printf() , scanf() , gets() , putchar() и др. Функции – это строительные элементы языка С и то место , в котором выполняется вся работа программы [10.1].
Большие программы обычно состоят из нескольких пользовательских функций и ряда системных функций. Функция – самостоятельная единица программы. Функции повышают уровень модульности программы, облегчают ее чтение, внесение изменений и коррекцию ошибок.
В основе всех программ на языке программирования С лежат одни и те же фундаментальные элементы – функции [10.2]. В частности, функция main() является обязательной для любой программы. Во всех программах С определяется единая внешняя функция с именем main() , служащая точкой входа в программу, то есть первой функцией, выполняемой после запуска программы [10.3].
Ни одна программа в языке С не может обойтись без функций.
Функция в языке С играет ту же роль, что и подпрограммы или процедуры в других языках [10.4]. Каждая функция языка С имеет имя и список аргументов. По соглашению, принятому в языке С, при записи имени функции после него ставятся круглые скобки [10.4]. Это соглашение позволяет легко отличить имена переменных от имен функций.
Рассмотрим модельный пример программы, в которой, кроме функции main() , содержатся еще три функции [10.4].
В условной (модельной) программе имеются четыре функции: main() , function1() , function2() , function3() . Эти функции не имеют аргументов. Позднее рассмотрим функции, которые имеют аргументы. Аргументы функции – это величины, которые передаются функции во время ее вызова. Аргумент , стоящий в операторе вызова функции, называется фактическим параметром. Аргументы, стоящие в заголовке функции, называются формальными параметрами. В языке С функция может возвращать значение в вызывающую программу посредством оператора return . Оператор возврата из функции в точку вызова имеет две формы [10.5]:
В общем виде функция выглядит следующим образом [10.1]:
Тело_функции – это часть определения функции, ограниченная фигурными скобками и непосредственно размещенная вслед за заголовком функции. Тело функции может быть либо составным оператором , либо блоком [10.1]. В языке С определения функций не могут быть вложенными, т.е. внутри одной функции нельзя объявить и расписать тело другой функции.
Возвращаемый тип возвр-тип функции определяет тип данного, возвращаемого функцией. Например, это могут быть int , float , double и т.д. В случае, когда функция ничего не возвращает, ей присваивается тип void .
Функция может возвращать любой тип данных , за исключением массивов. Список параметров – это список , элементы которого отделяются друг от друга запятыми [10.1]. При вызове функции параметры принимают значения аргументов. Если функция без параметров, то такой пустой список можно указать в явном виде, поместив для этого внутри скобок ключевое слово void . Все параметры функции (входящие в список параметров) должны объявляться отдельно, причем для каждого из них надо указывать и тип, и имя. В общем виде список объявлений параметров должен выглядеть следующим образом [10.1]:
Результат выполнения программы показан на рис. 10.1.
Программа состоит из двух функций: printMessage() и main() . Выполнение программы всегда начинается с функции main() , которую называют еще главной. Внутри функции main() происходит вызов функции printMessage() без параметров. Когда происходит вызов функции , выполнение программы передается непосредственно вызванной функции. Внутри функции printMessage() выполняется только утверждение
Несмотря на то, что в функции printMessage() есть еще одно утверждение printf("\n\t 123\n") , которое не выполняется, поскольку используется утверждение возврата ( return ) из функции.
В языке С функция введена как один из производных типов .
Формальные параметры в определениях функций могут объявляться в форме прототипа [10.3]. Прототипы дают компилятору возможность тщательнее выполнять проверку типов аргументов [10.1]. Если используются прототипы, то компилятор может обнаружить любые сомнительные преобразования типов аргументов, необходимые при вызове функции, если тип ее параметров отличается от типов аргументов. Компилятор также обнаружит различия в количестве аргументов, использованных при вызове функции, и в количестве параметров функции.
В общем случае прототип функции должен выглядеть таким образом [10.1]:
В приведенной выше программе прототип функции printMessage() не использовался, так как сама функция была объявлена до главной функции main() . Для переносимости С -кода в С ++ использование прототипа функции обязательно. Поэтому к хорошему стилю программирования относится использование прототипов функций, поскольку большие программы обычно состоят из нескольких функций, часто расположенных в различных файлах.
Вышеприведенная программа с использованием прототипа функции printMessage() будет выглядеть следующим образом:
В листинге программы показаны две возможности использования прототипа функции printMessage() . При этом, сама функция printMessage() объявлена после функции main() .
Формальные параметры функции определены в прототипе функции. При обращении к функции используются фактические параметры, называемые аргументами функции.
Список фактических параметров – это список выражений, количество которых равно количеству формальных параметров функции ( исключение составляют функции с переменным числом параметров). Соответствие между формальными и фактическими параметрами устанавливается по их взаимному расположению в списках. Между формальными и фактическими параметрами должно быть соответствие по типам.
Синтаксис языка С предусматривает только один способ передачи параметров – передачу по значениям. Это означает, что формальные параметры функции локализованы в ней, т.е. недоступны вне определения функции и никакие операции над формальными параметрами в теле функции не изменяют значений фактических параметров [10.4].
Передача параметров по значению предусматривает следующие шаги [10.4]:
- При компиляции функции выделяются участки памяти для формальных параметров, т.е. формальные параметры оказываются внутренними объектами функции. При этом для параметров типа float формируются объекты типа double , а для параметров типов char и short int создаются объекты типа int. Если параметром является массив, то формируется указатель на начало этого массива, и он служит представлением массива-параметра в теле функции.
- Вычисляются значения выражений, использованных в качестве фактических параметров при вызове функции.
- Значения выражений – фактических параметров заносятся в участки памяти, выделенные для формальных параметров функции.
- В теле функции выполняется обработка с использованием значений внутренних объектов-параметров, и результат передается в точку вызова функции как возвращаемое ею значение.
- Никакого влияния на фактические параметры (на их значения) функция не оказывает.
- После выхода из функции освобождается память, выделенная для ее формальных параметров.
Важным является момент, что объект вызывающей программы, использованный в качестве фактического параметра, не может быть изменен из тела функции. Для подобного изменения существует косвенная возможность изменять значения объектов вызывающей программы действиями в вызванной функции. Это становится возможным с помощью указателя (указателей), когда в вызываемую функцию передается адрес любого объекта из вызывающей программы. С помощью выполняемого в тексте функции разыменования указателя осуществляется доступ к адресуемому указателем объекту из вызывающей программы. Тем самым, не изменяя самого параметра ( указатель - параметр постоянно содержит только адрес одного и того объекта), можно изменять объект вызывающей программы.
Массивы и строки также могут быть параметрами функции. В этом случае внутрь функции передается только адрес начала массива. Тогда можно в качестве параметра использовать указатель . Приведем два равноправных прототипа функций:
Поскольку массив передается в функцию как указатель , внутри функции можно изменять значения элементов массива–фактического параметра, определенного в вызывающей программе. Это возможно и при использовании индексирования, и при разыменовании указателей на элементы массива.
В языке С существует возможность создавать функции, число аргументов которых не определено – функции с переменным числом аргументов [1]. При этом следует указать только количество аргументов. Пример прототипа функции с переменным числом аргументов:
Многоточие (ј) в прототипе функции означает, что функция получает переменное число аргументов любого типа. Многоточие должно всегда находиться в конце списка параметров [1].
Макросы и определения заголовочного файла переменных аргументов stdarg.h (табл. 10.1) предоставляют программисту средства, необходимые для построения функций со списком аргументов переменной длины [1].
Привет, дорогой читатель! Вам, наверное, приходилось в программе использовать один и тот же блок кода несколько раз. Например, выводить на экран одну и ту же строчку. Для того, чтобы каждый раз не писать одинаковый блок кода в C++, присутствуют функции.
Сегодня мы разберем, что такое функции и как правильно их использовать в своей программе. Поехали!
Что такое функции
Функции — это блок кода, который вы можете использовать в любом участке вашей программы неограниченное количество раз. Например, в программе ниже мы выводим 2 строки (без применения функций):
А вот если бы мы использовали функции, то у нас получилось бы так:
Мы хотим, чтобы вы обратили внимание на увеличение количества строк в первой программе при выводе этих двух строк 5 раз.
Как видите, если правильно применять функции, то можно уменьшить программу в несколько раз. Но вы должны помнить — бессмысленно использовать функции без видимых оснований (например, если логика внутри функции слишком специфична).
Вашему компилятору будет совершенно без разницы, использовали вы функции или несколько раз вставили одинаковый блок кода, в итоге он выведет одинаковый результат.
Чтобы понять, как работают локальные переменные (например, переменные в функциях) и глобальные переменные, можете почитать данную статью.
Как создать функции в C++
Таким образом, чтобы создать функции, нужно использовать конструкцию, которая находится пониже:
Давайте разберем эту конструкцию:
- Тип данных функции. В самом начале нам нужно указать тип данных, который в конечном итоге будет передавать функция.
Но если мы не собираемся ничего передавать, а например, хотим просто вывести строку, то на месте можно указать тип void . Также вы можете указать тип int, это ни на что не повлияет.
- Имя функции. Нам нужно задать функции имя (исключениями являются зарезервированные слова в C++, имена начинающиеся с цифр, а также имена разделенные пробелом).
Лучше всего задавать такое имя, которое будет говорить вам в будущем, за что отвечает эта функция. И тогда в будущем вам не придется вспоминать, за что она отвечает.
- Аргументы функции. В скобках (после имени функции) могут находиться аргументы функции. Аргумент функции — это значение, которое можно передать функции при ее вызове. Если аргумент функции не один, а их несколько, то их нужно разделять запятой.
Если аргументов в функции нет, то в скобках можно указать тип void . Но писать его необязательно, он стоит по умолчанию.
- Блок кода. После открывающей скобки идет блок кода, который будет начинать работать при вызове функции.
Также, если мы хотим вернуть какое-то значение из функции или вообще прекратить ее работу, то вам понадобится использовать оператор return .
Если вы не знали main() — это тоже функция.
Как вызывать функцию
Для вызова функций вам нужно использовать такую конструкцию:
Например, выше для вызова функции stroka() (эта функция находится выше) нам нужно использовать такую конструкцию:
Как видите, мы не вписывали аргументы в круглые скобки, так как мы их не указали при создании функции.
Зачем использовать функции
Практически все программисты на текущее время постоянно используют функции, поскольку это экономит их время и позволяет более интенсивно работать. Особенно хорошо отзываются те программисты, которые уже работали над большими проектами, имеющими тысячи строк кода за собой.
Перегрузка функций
В С++ вы можете создавать функции с одинаковыми именами. Вы наверно удивлены, что такое вообще возможно так, как если у нас будет 3 функции с одинаковыми именами и мы захотим вызвать одну из этих функций, то мы таким образом вызовем все 3 функции и получится полная каша. Но компилятор думает про это совершенно по-другому.
Все дело в том, что у каждой функции есть свое полное имя (или по-другому сигнатура). Параметры функции — это вся информация о функции. В эту информацию входят:
- Имя функции.
- Число аргументов функции.
- Типы аргументов.
Именно поэтому компилятор считает функции с одинаковыми именами разными, если сигнатуры соответственно тоже разные.
Перегрузка функций — это создание функций с одинаковыми именами, но с разными сигнатурами (полными именами).
Читайте также:
- Интересы правосудия как объект преступления
- Перед отправлением поезда машинист обязан включить саут не менее чем за
- Признак вещных прав право следования означает что эти права следуют за
- Выплаты на детей в 2021 до 16 лет будут ли
- Опыт истории показывает что тоталитарные режимы заинтересованы в превращении граждан