Well, in the first function you are taking var by value and thus a copy will be made. Not only that, but it is also not constant and thus it is perfectly legal to modify the value of var in the first function.
However, in your second example the code won't compile unless x and y are marked as mutable as you are trying to modify an argument that is marked as const. Even then, say those members are mutable, it doesn't generally make much sense to pass a variable into a function that marks said variable as constant only to break that promise.
Anyways, it is safe to change variables that are passed into functions so long as they are not marked as constant.
You can define the operators to do whatever you want, but if you do something unexpected there is an increased risk that someone will use it incorrectly.