русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Синтаксис объявления операторной функции


Дата добавления: 2015-07-09; просмотров: 726; Нарушение авторских прав


Перегрузка операций основывается на следующем принципе.

С использованием специфического синтаксиса определяется статическая операторная функция, в заголовке которой указывается символ переопределяемой операции. В теле функции реализуется соответствующий алгоритм, определяющий семантику операторной функции (семантику новой операции). Выражение вызова операторной функции напоминает синтаксис выражения, построенного на основе соответствующего символа операции. При трансляции сложного выражения, включающего символы операций, транслятор проверяет находит соответствующую операторную функцию и обеспецивает передачу управления этой функции.

Синтаксис объявления операторных функций представлен в виде множества БНФ.

 



operator-declaration ::=

attributes opt operator-modifiers operator-declarator operator-body

 



operator-modifiers ::= operator-modifier

::= operator-modifiers operator-modifier

 



operator-modifier ::= public | static | extern

operator-declarator ::= unary-operator-declarator

::= binary-operator-declarator

::= conversion-operator-declarator

 



unary-operator-declarator ::=

type operator overloadable-unary-operator (type identifier)

overloadable-unary-operator ::= +

::= -

::= !

::= ~

::= ++

::= --

::= true

::= false

 



binary-operator-declarator ::=

type operator overloadable-binary-operator (type identifier ,type identifier)

overloadable-binary-operator ::= +

::= -

::= *

::= /

::= %

::= &

::= |

::= ^

::= <<

::= >>

::= ==

::= !=

::= >

::= <

::= >=

::= <=

 



conversion-operator-declarator ::= implicit operator type (type identifier)

::= explicit operator type (type identifier)

 



operator-body ::= block

::= ;

 



Унарные операции. Пример объявления и вызова

 

using System;

 



class Point2D

{

int x,y;

 



Point2D()

{

x=0;

y=0;

}

 



Point2D(Point2D key)

{

x=key.x;

y=key.y;

}

 



 



// Перегруженные операции обязаны возвращать значения!

// Операторные функции!

// Они должны объявляться как public и static.

// Префиксная и постфиксная формы операций ++ и –

// НЕ различаются по результату выполнения (что есть криво)!

// Тем не менее, они могут быть объявлены:

// Одна как префиксная!

public static Point2D operator ++ (Point2D par)

{

par.x++;

par.y++;

return par;

}

 



// Другая как постфиксная!

public static Point2D operator -- (Point2D par)

{

Point2D tmp = new Point2D(par);

// Скопировали старое значение.

par.x--;

par.y--;

// Модифицировали исходное значение. Но возвращаем старое!

return tmp;

}

 



 



static void Main(string[] args)

{

Point2D p = new Point2D();

 



// В соответствии с объявлением, плюсы ВСЕГДА ПРЕФИКСНЫ, а минусы ПОСТФИКСНЫ

p++; // Префиксная.

++p; // Префиксная.

p--; // Постфиксная.

--p; // Постфиксная.

}

}

 





<== предыдущая лекция | следующая лекция ==>
Перегрузка операций | Бинарные операции


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.581 сек.