Как читать объявления константных методов и константных указателей в C++?
Это довольно просто. Вот несколько примеров.
class A
{
public:
void foo(); // обычный метод
void bar() const; // константный метод, т.е. не может менять члены класса A
const int baz(); // метод, возвращающий константу
}
Описание переменных и указателей. Если есть *, то условно читаем справа налево:
T t1; // обычная переменная типа T
const T t2; // константа типа T
T* t3; // указатель типа T
T* const t4; // константный указатель (не может указывать на другую область памяти)
const T* t5; // указатель на константу (не можем менять значение, лежащее по адресу через этот указатель)
const T *const t6; // константный указатель на константу
Описание ссылок и их использование:
int i;
const int &r = i; // Создается ссылка на значение, которое дальше нельзя менять
// (тонкий момент, сама переменная i - не константа)
int x = r + 5; // Действие допустимо
i = 7; // Действие допустимо
r = 12; // Ошибка! Это действие вызовет ошибку при компиляции
const int j = 5;
int &jr = j; // Ошибка! Нельзя ссылаться на константу обычной ссылкой
const int &jcr = j // Все в порядке, ошибки нет