Marking a member function volatile
is like marking it const
; it means that the receiver object is treated as though it were declared as a volatile T*
. Consequentially, any reference to x
or y
will be treated as a volatile
read in the member function. Moreover, a volatile
object can only call volatile
member functions.
That said, you may want to mark x
and y
volatile
anyway if you really do want all accesses to them to be treated as volatile
.