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");

   

}


 

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

46293. Общеисторическая природа сознания. Роль труда в возникновении и развитии сознания. Единство языка и мышления 11.29 KB
  Роль труда в возникновении и развитии сознания. Энгельс считал что решающую роль в возникновении сознания сыграл труд. Роль труда складывается из нескольких факторов. Труд сыграл роль в становлении мозга.
46294. Понятия «клиент», с точки зрения практики социальной работы 10.02 KB
  Системный подход к этому понятию означает что личностная и социальная проблема трудности связанные с межличностным общение или сложная жизненная ситуация к разрешению которой стремится клиент должны быть увидены участниками процесса социальной работы объемно как результат стечения многих обстоятельств на которые оказали влияние как личностные так и социальные факторы. Уникальность социальной работы для оказания помощи людям заключается именно в том чтобы способствовать достижению изменений во взаимодействиях между людьми и...
46295. Дети как объект социальной работы 8.86 KB
  Специфика социального обслуживания детейсирот детей оставшихся без попечения родителей детейинвалидов детей с девиантным поведением. Дети оставшиеся без попечения родителей лица в возрасте до 18 лет которые остались без попечения единственного родителя или обоих родителей в связи с: лишением их родительских прав; ограничением их в родительских правах; признанием родителей безвестно отсутствующими недееспособными ограниченно дееспособными находящимися в лечебных учреждениях; объявлением их умершими; отбыванием ими наказания в...
46297. Объединения юридических лиц 15.56 KB
  Объединения Юридических Лиц некоммерческие организации созданные юридическими лицами на добровольных договорных началах и на основе их членства в форме ассоциаций и союзов в целях координации их деятельности и представления и защиты их общих в том числе имущественных интересов п. Объединения Юридических Лиц не вправе осуществлять какиелибо управленческие функции в отношении участников которые полностью сохраняют свою самостоятельность. атривает минимально необходимого числа участников Объединения Юридических Лиц отдавая решение этого...
46298. Грамматическое значение и грамматические формы. Способы выражения грамматических значений в языке 15.55 KB
  Грамматическое значение и грамматические формы. Таким образом можно сказать что каждое грамматическое явление всегда имеет две стороны: внутреннюю грамматическое значение и внешнюю грамматический способ выражения. Если лексическое значение может быть только одно то грамматических значений у слова может быть несколько и они находят в языке свое морфологическое и синтаксическое выражение. В области морфологии грамматическое значение это общие значения слов как частей речи например значение предметности у существительных а также...
46299. The adjective 15.52 KB
  Unlike nouns djectives do not possess full nomintive vlue. Clssifiction of djectives.Хаймович и Роговская With regrd to the ctegory of the degrees of comprison djectives fll under 2 lexicogrmmticl subclsses: comprbles nd noncomprbles. The nucleus of the ltter is composed of derived djectives like wooden Crimen mthemticl etc.
46300. ФОНЕМА КАК ЕДИНИЦА ЯЗЫКА. ФУНКЦИИ ФОНЕМЫ 15.5 KB
  Функции фонем Фонемы выполняют следующие функции: дистинктивная различительная функция выражается в том что фонема служит для фонетического опознавания и семантического отождествления слов и морфем. Дистинктивная функция включает в себя перцептивную опознавательную и сигнификативную смысл оразличительную функции перцептивная функция функция доведения звуков речи до восприятия: она дает возможность воспринимать и опознавать органом слуха звуки речи и их сочетания способствуя отождествлению одних и тех же слов и морфем...
46301. Методика экономического анализа 15.5 KB
  В экономическом анализе методика представляет собой совокупность аналитических способов и правил исследования экономики предприятия определенным образом подчиненных достижению цели анализа. Методика экономического анализа совокупность специфических приемов и способов исследования которые применяются при обработке экономической информации в соответствии с поставленными задачами. Она содержит следующие моменты: задачи и формулировки целей анализа; объекты анализа; системы показателей с помощью которых будет исследоваться каждый...