ВУЗ:
Составители:
Рубрика:
Для любой операции @ можно лишь задать новую семантику.Изме-
нить ее приоритет или арность,т.е.синтаксис выражений,невоз-
можно.Невозможно также задать различную семантику для префик-
сной и постфиксной форм записи операций ++ и --,т.е.не имеет
значения,как записывать ++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
- …
- следующая ›
- последняя »