Полезно за вас: Речник | Игри | Новини | Фирми | Рецепти | Обяви
Начало на реферати

ПРЕДЕФИНИРАНЕ НА ОПЕРАТОРИ


Информационни технологии | 2009-12-04 | 127 сваляния

8. ПРЕДЕФИНИРАНЕ НА ОПЕРАТОРИ

Въведение

Преобладаващата част от операторите (+, -, *, /, ++ и др.) могат да се предефинират така, че те да реализират специфични действия в зависимост от типовете на операндите. Предефинирането на оператори позволява операциите с конструирани от потребителя типове (класове и структури) да се записват по същия начин, както се записват операциите с основните типове. Например, операторът + може да бъде предефиниран така, че операцията събиране на два вектора р и q да може да запише като р + q, т.е. сумата на векторите се записва по същия начин както се записва и сума на обикновени числа, което прави програмите по-разбираеми.

Предифинирането на оператори се подчинява на определени правила например:

1. Множеството на операторите, които могат да бъдат предефинирани, е следното:

[] () -> ++ -- & * + - ~ ! sizeof / % << >> < > <= >= == != ^ /=

&& || = *= &= ^= |= += -= <<= >>=

Операторите :: . ?: . * , както и символът #, който се използува в директивите на препроцесора, не могат да бъдат предефинирани.

2. Не е възможно да се променят основните характеристики на операторите. Такива характеристики са техният приоритет, броят операндите и правилата за асоциативност. Следователно операторите -- и ++ са винаги унарни, докато операторите + - & * могат да бъдат предефинирани като унарни и като бинарни.

3. Някои от свойствата на оригиналните оператори могат да се загубят след тяхното предефиниране. Например оригиналните оператори ++ и -- имат префиксна и инфиксна форма, което не е валидно за предефинираните оператори ++ и --.

4. Първоначалната семантика на операторите не може да се променя. Например, операторът ++, приложен върху променлива от тип int винаги означава инкремснтиране и не може да се предефинира така, че да реализира друго действие върху променливи от този тип.

5. Предефинирането става чрез специален вид функции, наречени операторни функции. Името на операторна функция се състои от ключовата дума operator и мнемоничното означение на оператора, който се предефинира чрез нея. Операторната функция може да бъде нестатичен метод на клас или външна за класа функция, която има поне един параметър от тип class. Изключение от това правило правят операторите new и delete.

7. Един и същ оператор може да бъде предефиниран многократно чрез множество операторни функции, които трябва да се различават по типа и/или броя на параметрите си.

8. Операторната функция има достъп до компонентите на класа, обявени като private или protected, когато е метод или функция-приятел на този клас.

9. Предефинираните оператори, с изключение на оператора за присвояване =, се наследяват в съответствие с правилата за наследяване, валидни за останалите компоненти на класовете.

Когато операторната функция е нестатичен метод на класа, тя е с един параметър и той трябва да съответства на втория операнд на предефинирания оператор. Първият операнд се предава неявно чрез указателя this.


Програма 8.1. Програма за намиране сума и разлика на вектори, реализирана чрез предефини-ране на операторите + и - за класа vector.


#include

#include

//Декларация ма класа vector

margin-bottom: 0in; orphans: 2; text-align: left; text-indent: 0in; widows: 2"> float x, y;

public:

void getData();

void display();

vector operator+(vector); //Операторната функция е метод на класа

friend vector operator-(vector&,vector);//Опер. ф-я е приятел нa класа

};

//Дефиниция на метода getData

ПРЕДЕФИНИРАНЕ НА ОПЕРАТОРИ

Добави своя коментар:



Тагове от реферата: , , , , ,


Подобни материали


АРХИТЕКТУРА EG Информационни технологии | 2010-11-19 | 26 прочитания
Компютърно интегрирани производствени системи Информационни технологии | 2010-11-19 | 175 прочитания
Макроопределения. Включване на файлове Информационни технологии | 2010-11-19 | 58 прочитания
Принципи на работа в Интернет Информационни технологии | 2010-11-19 | 171 прочитания
ОТПЕЧАТВАНЕ НА ТАБЛИЦА И ДИАГРАМА Информационни технологии | 2010-11-19 | 234 прочитания
Изграждане и ъпгрейд на КС Информационни технологии | 2010-11-19 | 63 прочитания
КОМУНИКАЦИОНЕН И ПРИЛОЖЕН СОФТУЕР, ОБЕЗПЕЧАВАЩ ИНТЕРНЕТ Информационни технологии | 2010-11-19 | 53 прочитания
Видове бизнес организации (съгласно търговския закон) ЕТ, ООД, АД Информационни технологии | 2010-11-19 | 197 прочитания
Схемен контрол при предаване и съхраняване на информацията. Цикличен код. Код на Хеминг. Приложение Информационни технологии | 2010-11-19 | 120 прочитания
Форматиране на параграф Информационни технологии | 2010-11-19 | 186 прочитания