Функции-члены могут быть объявлены как const, volatile или и то и другое одновременно. Имеется несколько правил. Объекты, объявленные как volatile, могут вызывать только функции-члены, также объявленные как volatile. Объект const не может вызывать функцию-член, которая не является const. Тем не менее, функция-член const может быть вызвана любым объектом. Функция-член const не может модифицировать объект, который ее вызвал. Эти правила действуют совместно для функций, которые являются одновременно const и volatile.
Для объявления функций-членов как const и volatile используется форма, показанная в следующем примере:
class X {
public:
int f1() const; // функция-член с модификатором const
void f2 (int a) volatile; // функция-член с модификатором volatile
char *f3() const volatile; // функция-член с модификаторами const volatile
};