Константный объект - Большая Энциклопедия Нефти и Газа, статья, страница 2
Скупой платит дважды, тупой платит трижды. Лох платит всю жизнь. Законы Мерфи (еще...)

Константный объект

Cтраница 2


16 Использование класса Time с константными объектами и константными функциями-элементами ( часть 1 из 3. [16]

Объявляйте как const все функции-элементы, которые предполагается использовать с константными объектами.  [17]

Более подробно этот вопрос рассматривается на следующем занятии при изучении ссылок на константные объекты.  [18]

Функция GetFirstNameO возвращает константную строку и вы не можете использовать operateг с константным объектом.  [19]

Теперь вы научились для безопасной передачи значений между функциями использовать константные указатели на константные объекты или константные ссылки, благодаря чему достигается как эффективность, так и безопасность работы программы.  [20]

Программисты, работающие с языком C, обычно не видят разницы между константной ссылкой на объект SimpleCat и ссылкой на константный объект SimpleCat. Сами ссылки нельзя переназначать, чтобы они ссылались на другой объект, поэтому они всегда константны. Если к ссылке применено ключевое слово const, то это делает константным объект, с которым связана ссылка.  [21]

Адрес этого обычного объекта передается функции FunctionTwoO, но, поскольку в объявлении функции FunctionTwoO заявлено, что передаваемый указатель должен быть константным указателем на константный объект, с этим объектом функция обращается так, как если бы он был константным.  [22]

Здесь возникает интересная проблема для конструкторов и деструкторов, которые обычно должны изменять объект. Для конструкторов и деструкторов константных объектов объявление const не требуется. Конструктор должен иметь возможность изменять объект с целью присваивания ему соответствующих начальных значений. Деструктор должен иметь возможность выполнять подготовку завершения работ перед уничтожением объекта.  [23]

24 Использование класса Time с константными объектами и константными элементами-функциями ( часть 1 из 3. [24]

Здесь возникает интересная проблема в связи с конструкторами и деструкторами, каждый из которых, несомненно, изменяет объекты. Для конструкторов и деструкторов константных объектов объявлений с модификатором const не требуется. Конструктору должно быть разрешено изменять объект, с тем чтобы этот объект мог быть надлежащим образом инициализирован. Деструктор должен иметь возможность выполнять свою заключительную приборку до разрушения объекта.  [25]

Константный объект нельзя изменить с помощью присваивания, поэтому он должен быть инициализирован. Если элемент данных является константным объектом, то для того, чтобы конструктор мог установить начальные значения для этого объекта, должен использоваться инициализатор элемента.  [26]

В этой программе функция FunctionOne не используется, но вызывается функция FunctionTwoO, которая слегка изменена. На этот раз и параметр, и значение возврата объявляются как константные указатели на константные объекты.  [27]

Это жестоко, поскольку клиенты объектов возможно захотят использовать различные функции-элементы чтения get, а они, конечно, не изменяют объект. Чтобы обойти это, программист может объявить константные функции-элементы; только они могут оперировать константными объектами. Конечно, константные функции-элементы не могут изменять объект - это не позволит компилятор.  [28]

Это жесткое ограничение, поскольку клиенты объекта, возможно, захотят использовать с этим объектом различные geU - функции. Чтобы предоставить клиентам такую возможность, программист может объявить константные элементы-функции; только эти функции могут оперировать с константными объектами. Разумеется, константные функции-элементы не могут модифицировать объект.  [29]

В этом случае не допускается присвоение данному указателю нового адреса. Указатель, хранящий адрес константного объекта, не может использоваться для изменения этого объекта.  [30]



Страницы:      1    2    3