русс | укр

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

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

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

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


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

Перегрузка операций.


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


Можно перегружать любые операции, существующие,в С++, за исключением:

.* ?: :; # # sizeof

 

Перегрузка операций осуществляется с помощью методов специального вида {функций-операций) и подчиняется следующим правилам:

□ при перегрузке операций сохраняются количество аргументов, приоритеты операций и правила ассоциации (справа налево или слева направо), исполь­зуемые в стандартных типах данных;

□ для стандартных типов данных переопределять операции нельзя;

□ функции-операции не могут иметь аргументов по умолчанию;

□ функции-операции наследуются (за исключением =);

□ функции-операции не могут определяться как static.

Функцию-операцию можно определить тремя способами: она должна быть либо методом класса, либо дружественной функцией класса, либо обычной функцией. В двух последних случаях функция должна принимать хотя бы один аргумент, имеющий тип класса, указателя или ссылки на класс1.

Функция-операция содержит ключевое слово operator, за которым следует знак переопределяемой операции:
тип operator операция ( список параметров) { тело функции }

Перегрузка унарных операций

Унарная функция-операция, определяемая внутри класса, должна быть пред­ставлена с помощью нестатического метода без параметров, при этом операндом является вызвавший ее объект, например:

Перегрузка бинарных операций

Бинарная функция-операция, определяемая внутри класса, должна быть пред­ставлена с помощью нестатического метода с параметрами, при этом вызвавший ее объект считается первым операндом:

Перегрузка операции присваивания

Операция присваивания определена в любом классе по умолчанию как поэле­ментное копирование. Эта операция вызывается каждый раз, когда одному суще­ствующему объекту присваивается значение другого. Если класс содержит поля, память под которые выделяется динамически, необходимо определить собствен­ную операцию присваивания. Чтобы сохранить семантику присваивания, опера­ция-функция должна возвращать ссылку на объект, для которого она вызвана, и принимать в качестве параметра единственный аргумент — ссылку на присваи­ваемый объект.



Перегрузка операции приведения типа

Можно определить функции-операции, которые будут осуществлять преобразо­вание объекта класса к другому типу.

Тип возвращаемого значения и параметры указывать не требуется, Можно опре­делять виртуальные функции преобразования типа.

Перегрузка операции вызова функции

Класс, в котором определена операция вызова функции, называется функцио­нальным.

Перегрузка операции индексирования

Операция индексирования [] обычно перегружается, когда тип класса представ­ляет множество значений, для которого индексирование имеет смысл. Операция индексирования должна возвращать ссылку на элемент, содержащийся в множе­стве. Перегруженная операция индексирования получает целый аргумент и проверяет, лежит ли его значение в пределах диапазона массива. Если да, то возвращается ад­рес элемента, что соответствует семантике стандартной операции индексирования.

 

27.Конструктор копирования и перегруженный оператор присваивания.

28.Классы и динамическое распределение памяти.

29.Конструирование объекта в динамической памяти.

30.Статические члены класса.

31.Наследование классов.

32.Наследования типов «is a» и «has a».

33.Порядок конструирования объектов производного типа.

34.Защита доступа при наследовании.

35.Преобразование типов вверх и вниз.

36.Виртуальные функции, механизм их вызова.

37.Статическое и динамическое связывание.



<== предыдущая лекция | следующая лекция ==>
Уровни доступа. Использование дружественных классов. | Абстрактные базовые классы.


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


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

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

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


 


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

 
 

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

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