Что если функция f
изменяет var
?Этого не должно произойти, если t
равно const
.
Вот пример реализации f
:
int f(double & var)
{
var += 1;
return var;
}
Это изменит все, что передается в качестве аргумента. Но , если аргумент был const
... неудача.Тогда это не разрешено, и компилятор явно говорит вам об этом.
Это ошибка, сгенерированная компилятором:
error: binding reference of type 'double&' to 'const double' discards qualifiers
Итак, передав переменную const
в функцию (безнеконстантный аргумент), вы говорите компилятору игнорировать const
ness переменной в первую очередь.
Если вы хотите передать его по ссылке, передайте его const
-reference:
int f(const double & var) // or int f(double const& var)
{
var += 1;
return var;
}
Это указывает компилятору сохранять постоянство своих аргументов.