4968

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

Реферат

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

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

Русский

2012-11-30

30.97 KB

5 чел.

Полиморфизм

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

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

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

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

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

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

- шаблоны

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

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

Синтаксис операции похож на синтаксис обычной функции. Главным отличием операции от обычной функции является использование в качестве имени ключевого слова 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");

   

}


 

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

26328. Политическая борьба в Англии после окончания первой гражданской войны. Левеллеры 38.23 KB
  В годы подъёма революции в армии и среди городских низов обозначилось и новое течение леввелеров уравнителей лидером которых стал Д. Победа над королём вызвала рост авторитета армии Оливера Кромвеля к которой население уже непосредственно обращалось с петициями жалобами прошениями игнорируя парламент. Помимо невзгод принесённых войной на страну обрушилась засуха у парламента не хватало денег на содержание армии и своевременную выплату жалования солдатам. Всё это а также нежелание пресвитериан продолжать революцию выразилось в...
26329. Вторая гражданская война 1648 г. И казнь Карла I 14.88 KB
  Эти переговоры с полностью себя дискредитировавшим монархом оживили крайние настроения в армии где было сильно влияние левеллеров и привели к обострению отношений с парламентом движение в армии целями которого были наказание короля и окончательное свержение монархии. 1 января 1649 года своим решением она объявляет короля главным виновником гражданской войны против парламента союзником ирландцев и шотландцев в борьбе с английским государством. 4 января палата общин принимает при закрытых дверях постановление передававшее ей всю полноту...
26330. Внутренняя политика индепендентской республики 21.02 KB
  формальное оформление этого решения Долгий парламент точнее то что осталось от Долгого парламента его охвостье как тогда говорили всего 80 депутатов принял только 19 мая. В реальности Охвостье Долгого парламента продолжая дискуссии о форме и порядке правления в республике и оформляя парламентскими актами волю господствующих классов фактически передоверило управление страной Государственному совету и верхушке армии во главе с Кромвелем. был впервые произведен сбор таких штрафов на финансирование войны с Голландией операция эта...
26331. Итальянское Возрождение 25.17 KB
  К раннему периоду его творчества относится: большое Распятие в церкви Санта Мария Новелла во Флоренции ; Мадонна ди Сан Джорджио Алла Коста Флоренция; Мадонна из частной коллекции. Ко времени ухода из мастерской Вероккио исследователи относят Мадонну с цветком Мадонна Бенуа . Его основные творения в области живописи: Пейзаж долины реки Арно Крещение Христа Благовещение портрет Жинервы де Бенчи Мадонна в скалах дама с горностаем Тайная вечеря Битва при Ангиари Леда с лебедем ...
26332. Испанское Возрождение 38.32 KB
  Вот почему даже такие передовые люди Испании как Сервантес и Лопе де Вега не порывают до конца с католической традицией. К этому направлению принадлежал крупнейший поэт раннего испанского Возрождения Гарсиласо де ла Вега 1503 1536. пасторальный мотив введённый в испанскую литературу Гарсиласо де ла Вега также получил развитие в форме романа. Общественное содержание испанской драмы от Лопе де Вега до Кальдер она составляет полная напряжённого драматизма борьба абсолютной монархии с вольностями старой Испании добытыми испанским...
26333. Северное Возрождение 27.83 KB
  Актуальность этой темы определяется огромной ролью которую Возрождение сыграло в формировании современной западной культуры. Название Нидерланды Нижние земли получил в средние века комплекс территорий расположенных в низовьях Рейна по побережью Северного моря и вдоль рек Шельды и Мааса. После отречения Карла V от престола страна в составе 17 провинций была унаследована в 1556 г. Распространение Реформации в том числе кальвинистской вызвало в Нидерландах при Филиппе II воинствующем католике особенно жестокие преследования...
26334. Английское Возрождение 38.59 KB
  Культура Возрождения с её идейной основой философией и эстетикой гуманизма возникает прежде всего на итальянской почве. Неудивительно что влияние Италии можно заметить у всех английских писателей эпохи Возрождения. Широкий народный фон английского Возрождения его основное достоинство источник таких достижений XVI столетия как Утопия Томаса Мора и театр Шекспира. Вслед за официальной реформацией поднимается новая волна религиозного фанатизма движение пуритан враждебных жизнерадостному светскому духу Возрождения гуманистической...
26335. Исторические предпосылки и характерные черты эпохи Просвещения 18.1 KB
  Исторические предпосылки и характерные черты эпохи Просвещения. Исторические предпосылки: Характерные черты эпохи Просвещения: 18 век важный этап в эволюции западноевропейской культуры. Идеология Просвещения возникла в 17 веке ее родоначальником считается английский философ Д. Представители Просвещения в своих политических философских культурологических взглядах отстаивали могущество разума и свет знаний которые должны победить тьму невежества заблуждений и предрассудков.
26336. Развитие естественнонаучной мысли эпохи Просвещения 12.77 KB
  Развитие естественнонаучной мысли эпохи Просвещения. В истории философской мысли 18 век обычно характеризуется как век Просвещения. Оптимизм Просвещения выражает менталитет крепнувшей буржуазии не случайно родиной Просвещения стала Англия раньше других стран вставшая на путь капиталистического развития. Развитие Просвещения в философии тесно связано с социальнополитическими идеями становлением идеологии.