ВУЗ:
Составители:
Рубрика:
Для любой операции @ можно лишь задать новую семантику.Изме-
нить ее приоритет или арность,т.е.синтаксис выражений,невоз-
можно.Невозможно также задать различную семантику для префик-
сной и постфиксной форм записи операций ++ и --,т.е.не имеет
значения,как записывать ++x или x++,--x или x--.
Таким образом,при необходимости одна и та же операция @
помимо основной,предопределенной в языке семантики,может иметь
в программе или даже в иерархии составных типов несколько до-
полнительных семантик.Вывод требуемой семантики в каждой кон-
кретной точке программы осуществляется по типу используемых
операндов рассматриваемой операции,причем в ряде случаев могут
иметь место автоматические преобразования типов операндов.Та-
кое преобразование типов может иметь место,когда компилятор не
нашел операции с заданными типами операндов.Автоматически мо-
гут выполняться как стандартные преобразования типов,так и
преобразования типов,определяемые программистом,причем первым
отдается предпочтение - они выполняются в первую очередь,а для
вторых разрешен только один уровень.Разумеется,программист мо-
жет явно использовать любые стандартные и собственные преоб-
разования.
Для задания новой семантики операции @ программист должен
выполнить следующие действия:
1.Включить в соответствующий составной тип описание функ-
ции с именем operator@.
2.Включить в этот же тип описания функций для выполнения
необходимых преобразований типов.
3.Дать внешнее определение для функции operator@.
4.Дать внешние определения для всех функций преобразований
типов.
Если определения функций занимают мало места,то их можно
включать непосредственно в составной тип,замещая описания
этих функций.
Рассмотрим пример простой реализации понятия комплексного
числа,в котором число представляется парой чисел с плавающей
точкой двойной точности:
26
Для любой операции @ можно лишь задать новую семантику.Изме-
нить ее приоритет или арность,т.е.синтаксис выражений,невоз-
можно.Невозможно также задать различную семантику для префик-
сной и постфиксной форм записи операций ++ и --,т.е.не имеет
значения,как записывать ++x или x++,--x или x--.
Таким образом,при необходимости одна и та же операция @
помимо основной,предопределенной в языке семантики,может иметь
в программе или даже в иерархии составных типов несколько до-
полнительных семантик.Вывод требуемой семантики в каждой кон-
кретной точке программы осуществляется по типу используемых
операндов рассматриваемой операции,причем в ряде случаев могут
иметь место автоматические преобразования типов операндов.Та-
кое преобразование типов может иметь место,когда компилятор не
нашел операции с заданными типами операндов.Автоматически мо-
гут выполняться как стандартные преобразования типов,так и
преобразования типов,определяемые программистом,причем первым
отдается предпочтение - они выполняются в первую очередь,а для
вторых разрешен только один уровень.Разумеется,программист мо-
жет явно использовать любые стандартные и собственные преоб-
разования.
Для задания новой семантики операции @ программист должен
выполнить следующие действия:
1.Включить в соответствующий составной тип описание функ-
ции с именем operator@.
2.Включить в этот же тип описания функций для выполнения
необходимых преобразований типов.
3.Дать внешнее определение для функции operator@.
4.Дать внешние определения для всех функций преобразований
типов.
Если определения функций занимают мало места,то их можно
включать непосредственно в составной тип,замещая описания
этих функций.
Рассмотрим пример простой реализации понятия комплексного
числа,в котором число представляется парой чисел с плавающей
точкой двойной точности:
26
Страницы
- « первая
- ‹ предыдущая
- …
- 24
- 25
- 26
- 27
- 28
- …
- следующая ›
- последняя »
