4968

Полиморфизм и виды его операций

Реферат

Информатика, кибернетика и программирование

Полиморфизм Полиморфизм – использование одного и того же имени функции, операции или класса для разных типов данных. Полиморфизм позволяет многократно не переписывать фрагменты программы, реализующие один и тот же алгоритм для разных типов...

Русский

2012-11-30

30.97 KB

3 чел.

Полиморфизм

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

Полиморфизм используется в так называемых абстрактных классах, предназначенных для описания структур данных: массивов, списков, деревьев и т.д. В качестве параметров таких классов задаются типы элементов структур данных.

Виды полиморфизма

Различают следующие виды полиморфизма:

- полиморфизм функций (переопределение функций)

- полиморфизм операций (переопределение операций)

- шаблоны

Полиморфизм операций (переопределение операций)

Переопределение операций – использование знаков операций над переменными стандартных типов данных для программирования операций над переменными пользовательских типов данных. Например, для объектов пользовательского класса можно придумать операции сложения, умножения, сравнения на равенство, сравнения на большинство/меньшинство и т.д.

Синтаксис операции похож на синтаксис обычной функции. Главным отличием операции от обычной функции является использование в качестве имени ключевого слова operator и знака переопределяемой операции.

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

1. Можно перегружать любые операции ., *, ?:, ::, sizeof.

2. Все операции наследуются кроме присваивания.

3. При перегрузке операции с одним операндом она не должна иметь параметров

4. При перегрузке операции с двумя операндами она должна иметь один параметр (ссылку на объект).

5. Для организации последовательности операций они должны возвращать ссылку на объект.

6 Операции ++ и -- переопределяются в префиксной и постфиксной формах. Для префиксной формы входных параметров нет, для постфиксной – один целочисленный входной параметр.

7. Операция присваивания определяется по умолчанию.

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

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

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

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

#pragma once

class Person

{

public:

Person(void);

~Person(void);

private:

 char* Fio;

 int Age;

public:

 void SetAll(char* Fio1, int Age1);

 void Print(void);

 bool operator <(Person& P2);

};

#include "StdAfx.h"

#include ".\person.h"

#include <string.h>

Person::Person(void)

: Fio(NULL)

, Age(0)

{

}

Person::~Person(void)

{

}

void Person::SetAll(char* Fio1, int Age1)

{

Fio=new char[strlen(Fio1)];

strcpy(Fio,Fio1);

Age=Age1;

}

void Person::Print(void)

{

printf("%s %d\n",Fio,Age);

}

// Сравнение объектов на меньшинство по алфавиту и по возрасту

bool Person::operator <(Person& P2)

{

 if(strcmp(Fio,P2.Fio)<0)

 return true;

 else

 if(strcmp(Fio,P2.Fio)==0 && Age<P2.Age)

  return true;

 else

  return false;

 return false;

}

#include "stdafx.h"

#include ".\person.h"

main()

{

Person P1, P2;

P1.SetAll("Иванов", 35);

P2.SetAll("Петров", 20);

 if(P1<P2)

 printf("P1<P2-verno");

   

}


 

А также другие работы, которые могут Вас заинтересовать

43986. Разработка методику проведения контроля с использованием заданий нестандартной формы по теме «Логарифмическая функция» 1.82 MB
  Обилие литературы по проблеме мотивации и мотивов сопровождается и многообразием точек зрения на их природу что вынуждает некоторых психологов впадать в излишний пессимизм и говорить о практической неразрешимости проблемы. Общим недостатком существующих точек зрения и теорий является отсутствие системного подхода к рассмотрению процесса мотивации
43987. Основы обеспечения нравственного становления личности старшеклассников средствами литературы 237.5 KB
  Теоретические основы становления и современного состояния теории нравственного воспитания. Становление теории нравственного воспитания в истории педагогики Анализ современного состояния теории нравственного воспитания. Факторы или условия совершенствования нравственного воспитания в школе
43988. Выбор и обоснование структуры данных для алгоритма построения красно-черного дерева 15.01 KB
  Красно-черные деревья - один из способов балансировки деревьев. Название происходит от стандартной раскраски узлов таких деревьев в красный и черный цвета. Цвета узлов используются при балансировке дерева
43989. Праздник для Несмеяны 158 KB
  Есть очень хорошая восточная пословица: До семи лет ребенок ваш царь до четырнадцати ваш раб после четырнадцати ваш друг. Царь страдает мачеха злится но колесо шантажа запущено уже давно. Ревнует она к Несмеяне к служанкам а так же боится что царь может влюбиться в кого ни будь помоложе. Отец Царь в данной ситуации выступает в роли жертвы и сильно страдает.
43990. Строительство автомобильной дороги в Хабаровском крае 2.31 MB
  Параметры воздействия на окружающую среду при выполнении подготовительных работ работ по сооружению земляного полотна устройству дорожной одежды разработке карьеров и резервов добыче и транспортировании минеральных материалов и соответствующие их коэффициенты значимости приведены на листе. Лист Дата ДП: Строительство автомобильной дороги III технической категории в Хабаровском крае. Лист Изм.
43991. Значения рынка акций как сферы реализации экономических интересов его участников и необходимости его развития как фактора активизации финансовых потоков на рынке капиталов 508 KB
  Понятие ценных бумаг их виды.Инфраструктура рынка ценных бумаг ее задачи и механизмы. Система регулирования рынка ценных бумагАнализ формирования и современного состояния российского рынка ценных бумаг.
43992. Особенности развития и роль российского газового комплекса на мировом рынке природного газа 2.87 MB
  Основные тенденции развития мирового рынка природного газа Эволюция структуры мирового рынка природного газа. За последние 47 лет суммарная доля трех главных природных энергоносителей нефти угля и природного газа изменилась незначительно.
43993. Радиосвязь, радиовещание и телевидение. ВЫПУСКНЫЕ КВАЛИФИКАЦИОННЫЕ РАБОТЫ 237.5 KB
  ВЫПУСКНЫЕ КВАЛИФИКАЦИОННЫЕ РАБОТЫ Методические указания для студентов специальности Радиосвязь радиовещание и телевидение Даются рекомендации по выполнению отдельных разделов работы проекта по оформлению текстовой и графической документации плакатов рисунков макетов. Указания составлены на основе работы авторов Дипломное проектирование. Методические указания для студентов специальности. Радиосвязь радиовещание и телевидение ...