Семантика значений
В информатике наличие семантики значения (также семантики типа значения или семантики копирования по значению ) означает, что для объекта учитывается только его значение, а не его идентичность. [1] [2] Неизменяемые объекты имеют семантику значений тривиально: [3] а при наличии мутации объект с семантикой значения может иметь только уникальную ссылку в любой точке программы.
Концепции, которые используются для объяснения этой концепции, - это экстенсиональность , определенность , замещаемость идентичности , развертываемость и ссылочная прозрачность . [4]
Ссылки
[ редактировать ]- ^ «Некоторые основные вопросы» . обзоры скорости . Проверено 17 июня 2011 г.
Важным соображением для семантики значений является то, что значимо только значение объекта, а не его идентичность. Таким образом, вы можете копировать его (конструктор копирования или присваивание) сколько угодно, и любую копию можно использовать вместо оригинала без каких-либо изменений.
- ^ Дэниел Элстнер. «Re: расширение Gdk::Region» . Списки рассылки GTK и GNOME . Проверено 17 июня 2011 г.
Что такое семантика значений? [...] Это специальное сокращение для «семантики типа значения» или «семантики копирования по значению».
- ^ «Некоторые основные вопросы» . обзоры скорости . Проверено 17 июня 2011 г.
Объект представляет собой неизменяемое значение (по сравнению с объектом, представляющим систему с изменяемым состоянием.) [...] Не обязательно, по крайней мере, не в C++. Мне нравится идея, что объект с семантикой значения может быть изменен только операторами присваивания, но это далеко не общий случай — например, std::string явно имеет семантику значения, несмотря на большое количество мутаторов. функции. (Можно возразить, что это ошибка проектирования, но если это так, то нам все равно придется с этим жить.)
- ^ «Некоторые основные вопросы» . обзоры скорости.
Важным соображением для семантики значений является то, что значимо только значение объекта, а не его идентичность. Таким образом, вы можете копировать его (конструктор копирования или присваивание) сколько угодно. [...] В конечном итоге можно выделить пять различных концепций, которые можно использовать для более точного объяснения этого понятия, а именно: экстенсиональность, определенность, взаимозаменяемость идентичности, развертываемость и ссылочная прозрачность.