How can i pass an int into a function that is expecting a const int.
Or is there a way of modifying cont int value?
Edit: I Sho
A top level const
in a function parameter list is completely ignored, so
void foo(const int n);
is exactly the same as
void foo(int n);
So, you just pass an int
.
The only difference is in the function definition, in which n
is const
in the first example, and mutable in the second. So this particular const
can be seen as an implementation detail and should be avoided in a function declaration. For example, here we don't want to modify n
inside of the function:
void foo(int n); // function declaration. No const, it wouldn't matter and might give the wrong impression
void foo(const int n)
{
// implementation chooses not to modify n, the caller shouldn't care.
}
This requires no fooling. A function that expects an argument of type const int
will happily accept an argument of type int
.
The following code will work fine:
void MyFunction(const int value);
int foo = 5;
MyFunction(foo);
Because the argument is passed by value, the const
is really rather meaningless. The only effect is has is to ensure that the function's local copy of the variable is not modified. The variable you pass to the function will never be modified, regardless of whether the argument is taken as const
or not.