Реферат: Объективное программирование
должны быть идентичными по результатам и параметрам:
void (dat::*fun)(); // Ссылка на элемент-функцию
// структуры dat
fun = & dat::Putdat(); // Значение fun - ссылка на
// элемент-функцию Putdat в dat
(x.*fun)(); // Вызов элемента-функции по
(px->*fun)(); // ссылке fun для структуры x
// и для структуры по ссылке px
Эквивалентно
x.Putdat();
px->Putdat();
2.10 Неизменяемые переменные (константы)
---------------------------------------
В Си++ введен дополнительный контроль за изменением значений переменных. Ключевое слово const, используемой при определении и инициализации переменной, запрещает ее изменение, что контролируется транслятором при ее дальнейшем использовании. Такая же возможность существует и для формальных параметров функции, например:
const int n=5;
n++; // Запрещено
int xxx(const int m)
{
m++; // Запрещено
}
Применительно к ссылке const может использоваться в двух вариантах, применительно к самой ссылке (адресу) и применительно к указуемому значению:
- при использовании conts применительно к указуемому значению разрешается модифицировать саму ссылку при помощи присваивания и операций адресной арифметики, а изменения операнда косвенно по ссылке запрещены. Такая ссылка называется ссылкой на постоянный объект:
const char * p;
p = "1234567890"; // Разрешено присваивание ссылке
p + =3; // Разрешена модификация ссылки
*(p+3) = '3'; // Запрещено присваивание по ссылке
(*p)++; // Запрещен инкремент по ссылке
- при использовании const применительно к ссылке запрещается менять значение ссылки после инициализации, в том числе средствами адресной арифметики. Такая ссылка называется постоянной ссылкой на объект:
char const* p = "1234567890";