On Friday, January 20, 2012 09:58:42 Marco Leise wrote: > Ah, I meant to say that getters should not modify their object. When I see > "a = abc.x[i]" I would be a little surprised to find that it changes the > observable state of abc. The same goes for "a = b.length()". Now it is > clearer, isn't is? :p
Yes. Generally, setters should be used to set rather than getters doing it one way or another, though I have no idea how either of your examples there would result in the getter changing anything. However, if a getter property returns a ref, then it's both a getter and a setter. But whether exposing the underlying variable like that makes sense depends on the property - generally not, I think. The one major place where you essentially have a getter being able to modifer the original through its return value in C++ that I'm aware of is the subscript operator, and it has to in order to function like the built-in substript operator, so that's a special case. - Jonathan M Davis