Предаване на параметри по препратка и по стойност
Параметрите могат да бъдат предадени на функция по един от следните начини:
int GetMax(int, int);
приема два целочислени аргумента по стойност.
В C++ предаването по референция може да се извърши по два начина:
• директно използване на връзки;
• използване на указатели.
Синтаксисът за препращане включва използване на препратка към тип обект като аргумент. Например функцията
Пример за прототип на функция при предаване на параметри през указател е показан по-долу:
void SetNumber(int*, long*);
Освен това функциите могат да връщат не само стойността на дадена променлива, но и указател или препратка към нея. Например функции, чийто прототип е:
В този случай опитът за връщане на препратка към локалната променлива x ще доведе до грешка, която, за съжаление, ще стане ясна само по време на изпълнение на програмата.
Ако се изисква да се предаде доста голям обект на функцията, но не е осигурена неговата модификация, на практика се използва предаване на постоянен указател. Този тип извикване включва използването на ключовата дума const, например функцията
const int* FName(int* const Number)
приема и връща указател към const обект от тип int. Всеки опит за промяна на такъв обект в тялото на извиканата функция ще доведе до съобщение за грешка на компилатора. Нека да разгледаме пример, илюстриращ използването на константни указатели.
int* const call(int* const);
int X = 13; int*pX = &X; повикване (px);
int* const call(int* const x)
//*x++; II не можете да променяте обекта! връщане x;
Вместо синтаксиса на постоянен указател по-горе, можете алтернативно да използвате постоянни препратки, когато предавате параметри, като така:
const int& FName (const int& Number)
имащи същото значение като константните указатели.