Объективное программирование — страница 8

  • Просмотров 9321
  • Скачиваний 351
  • Размер файла 45
    Кб

элемент-функцию // структуры 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"; char c; (*p) = '3'; // Разрешено присваивание по ссылке p++; // Запрещено изменение значения c = *(p+3); // самой ссылки Полная фиксация ссылки и адресуемого ею объекта возможна в виде const char const* p = "1234567890"; 2.11 Общие замечания о дополнениях в Си++ ----------------------------------------

Основные отличия Си++ от "классического" Си: - структура (struct) приближена по свойствам к базовым типам данных (char,int); - введено понятие элемента-функции. Элементы-функции играют роль своеобразного "интерфейса" для использования определенной программистом структуры; - расширены возможности транслятора по контролю и преобразованию параметров при вызове функции (неявная ссылка, переопределение, параметры по умолчанию).

Именно поэтому вызову любой внешней функции должно предшествовать объявление ее прототипа (заголовка функции со списком типов параметров). Все эти новые свойства необходимы при определении понятий класса и объекта. Лекция 3. Классы. Объекты. Конструкторы и деструкторы ---------------------------------------------------- 3.1.Понятие класса и объекта в Си++ ---------------------------------- В самом простом виде класс определяется в Си++ как структура, работа с элементами