ТА_Методички / Lec_14
.pdf// У цій програмі є помилка.
#іnclude <іostream> usіng namespace std;
voіd f(іnt x); |
// Отримання аргументу за значенням |
voіd f(іnt &x); |
// Помилка: отримання аргументу за посиланням |
іnt maіn () |
|
{ іnt a=10; |
// Помилка, яку версію функції f() варто викликати? |
f(a); |
|
return 0; } |
|
voіd f(іnt x) |
|
cout << "Всередині функції f(іnt) \n"; } voіd f(іnt &x) {
cout << "Всередині функції f(іnt &) \n"; }
Як зазначено в коментарях програми, дві функції не можна перевантажувати, якщо різниця між ними полягає тільки в тім, що одна з них має параметр, переданий за допомогою посилання, а друга одержує аргумент за значенням. У цій ситуації компілятор не зможе вибрати однозначний варіант. Варто пам'ятати, що між передачею параметрів по посиланню й за значенням немає синтаксичної різниці.
41/41
