ВУЗ:
Составители:
Рубрика:
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
Swap(array1, m, array2, n);
. . .
При разработке семейства перегруженных функций следует избегать
следующих ситуаций, когда нельзя однозначно определить, какую из
функций вызвать.
• Функции не должны отличаться только типом возвращаемого
значения. Пусть имеются функции:
void f(int a) {. . .}
int f(int a) {. . .}
Тогда при следующем вызове
f(10);
возникает неоднозначная ситуация для компилятора, которая
приводит к ошибке.
• Если две функции имеют параметры одного и того же типа, но в
одной из них параметры передаются по значению, а в другой – по
ссылке, вызов функции будет содержать неоднозначность,
поэтому компилятор рассматривает это как ошибку. Например,
имеются функции:
void f(int a) {. . .}
void f(int& a) {. . .}
Тогда при следующем вызове
int n = 19;
f(n);
возникает неоднозначность, поскольку синтаксис передачи
параметров при вызове функции по значению и по ссылке
одинаковый.
Ошибки не возникнет в случае передачи в качестве фактического
параметра константы, например,
f(10);
Тогда будет вызвана первая функция.
• Если списки параметров двух функций отличаются только
наличием в одной из них дополнительных параметров, которые
20
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
Swap(array1, m, array2, n);
. . .
При разработке семейства перегруженных функций следует избегать
следующих ситуаций, когда нельзя однозначно определить, какую из
функций вызвать.
• Функции не должны отличаться только типом возвращаемого
значения. Пусть имеются функции:
void f(int a) {. . .}
int f(int a) {. . .}
Тогда при следующем вызове
f(10);
возникает неоднозначная ситуация для компилятора, которая
приводит к ошибке.
• Если две функции имеют параметры одного и того же типа, но в
одной из них параметры передаются по значению, а в другой – по
ссылке, вызов функции будет содержать неоднозначность,
поэтому компилятор рассматривает это как ошибку. Например,
имеются функции:
void f(int a) {. . .}
void f(int& a) {. . .}
Тогда при следующем вызове
int n = 19;
f(n);
возникает неоднозначность, поскольку синтаксис передачи
параметров при вызове функции по значению и по ссылке
одинаковый.
Ошибки не возникнет в случае передачи в качестве фактического
параметра константы, например,
f(10);
Тогда будет вызвана первая функция.
• Если списки параметров двух функций отличаются только
наличием в одной из них дополнительных параметров, которые
20
Страницы
- « первая
- ‹ предыдущая
- …
- 18
- 19
- 20
- 21
- 22
- …
- следующая ›
- последняя »
