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

   

}


 

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

69591. РЕКУПЕРАТИВНИЙ ВОДНО-ПОВІТРЯНИЙ ТЕПЛООБМІННИЙ АПАРАТ ТИПУ “ТРУБКА У ТРУБЦІ” 127.5 KB
  Метою лабораторної роботи є поглиблення знань із теорії розрахунків теплообмінних апаратів, ознайомлення із методикою експериментального дослідження різних режимів роботи теплообмінних апаратів, набуття навичок проведення єкспериментів.
69593. ВИЗНАЧЕННЯ КОЕФІЦІЄНТА ТЕМПЕРАТУРОПРОВІДНОСТІ СИПУЧИХ ТІЛ МЕТОДОМ РЕГУЛЯРНОГО РЕЖИМУ 771.5 KB
  Метою роботи є поглиблення знань з теорії нестаціонарної теплопровідності; вивчення методики дослідного визначення коефіцієнта температуропровідності, набуття навичок у проведенні експерименту та оцінка похибок дослідження.
69594. ТЕПЛОВІДДАЧА ГОРИЗОНТАЛЬНОЇ ТРУБКИ ЗА УМОВ ПРИРОДНОЇ КОНВЕКЦІЇ (ВІЛЬНИЙ РУХ ПОВІТРЯ) 1.33 MB
  Метою лабораторної роботи є поглиблення знань з теорїї тепловіддачі за умов природної конвекції вільний рух рідини дослідне визначення коефіцієнта тепловіддачі ознайомлення із методикою експериментального дослідження природної конвекції та отримання навичок у проведенні експерименту...
69595. УСТРОЙСТВО И НАСТРОЙКА СВАРОЧНОГО ТРАКТОРА ТС-17 НА ЗАДАННЫЙ РЕЖИМ РАБОТЫ 48.5 KB
  Назначение универсального сварочного трактора типа ТС17 МУ Сварочный трактор ТС17 МУ переносной автомат универсального типа предназначенный для сварки под слоем флюса соединенных встык с разделкой и без разделки кромок угловых швов вертикальным и наклонным электродом и нахлесточных швов.
69596. УСТРОЙСТВО И НАСТРОЙКА МАШИН ТИПА МГ-1215 ДЛЯ ТОЧЕЧНОЙ КОНТАКТНОЙ СВАРКИ НА ЗАДАННЫЙ РЕЖИМ РАБОТЫ 1.46 MB
  Контактная точечная машина машина для точечной сварки предназначенная для закрепления нагрева и сжатия деталей. Размеры ядра можно регулировать изменением тока сварки времени сварки и усилием сжатия деталей.
69597. ЭЛЕМЕНТЫ И ГЕОМЕТРИЧЕСКИЕ ПАРАМЕТРЫ ТОКАРНЫХ РЕЗЦОВ 1.71 MB
  Оборудование инструменты и материалы: Резцы токарные проходные прямые отогнутые и упорные; угломер настольный с подкладками; макеты резцов с разъемом по главной секущей плоскости; плакаты части и элементы токарного резца координатные плоскости для определения углов резца углы резца.
69598. ИЗУЧЕНИЕ ХАРАКТЕРИСТИК ШЛИФОВАЛЬНЫХ КРУТОВ И3 ЭЛЕКТРОКОРУНДА И КАРБОРУНДА 2.64 MB
  Оборудование инструменты и материалы: наборы шлифовальных кругов; различные типы шлифовальных станков настроенных на соответствующую показательную обработку; плакаты характеристики шлифовальных кругов гидрокинематические схемы кругло плоско внутри и бесцентровошлифовального станков.