I have a habit to declare function parameters as const references (for const functions mostly, or if a parameter is purposefully read-only). Firstly because I think it ensures that the object is immutable. Secondly because it makes me think that this prevents copying the variable, especially when it's already read-only (even though the function works with the object of primitive data type).
But what if I pass a non-const variable to the function, or a pointer? Will it cause type casting, and are there consequences?