89781

Полиморфизм. Таблица виртуальных методов

Лекция

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

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

Русский

2015-05-13

39.45 KB

2 чел.

Полиморфизм

Содержание

Полиморфизм

  •  простой
  •  сложный
  •  виртуальные функции
  •  таблица виртуальных методов

Полиморфизм

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

При этом различают простой (механизм раннего связывания) и сложный полиморфизм (механизм позднего связывания).

Простой полиморфизм

Простой (статический) полиморфизм поддерживается языком С++ на этапе компиляции и реализуется с помощью механизма переопределения функций.

Эти переопределяемые полиморфные функции могут отличаться типом возвращаемого параметра и сигнатурой (количеством и типом передаваемых параметров)

Пример #6. Простой полиморфизм

class A { int a;

public:

void show (){cout<<“Вывод:”<<endl; print();}

void print (void){cout<<a<<endl;};

A(int v): a(v){}};

class B: public A {int b; public:

void print (void){cout<<b<<endl;};

B(int va, int vb): A(va), b(vb){}};

void main()

{A aa(20); B bb(10, 100);

//явный вызов полиморфной функции print()  

aa.print(); // вывод:20

bb.print; // вывод:100

//неявный вызов полиморфной функции print()  

aa.show();// вывод:20

bb.show(); // вывод:10

}

Комментарии:

При раннем связывании вызываемый метод SHOW в базовом классе жестко соединяется с переопределяемым далее методом PRINT на этапе компиляции и вызов наследуемого метода SHOW приведет к вызову метода PRINT базового класса, а не производного класса.

Сложный полиморфизм

Для получения правильного результата в подобных случаях необходимо использование позднего связывания, который реализуется описанием виртуальных функций.

Виртуальные функции

Виртуальными называются функции, которые объявляются с использованием ключевого слова virtual в базовом классе и переопределяются (замещаются) в производных классах.

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

Пример #7. Сложный полиморфизм

class A { int a; public:

void show (){cout<<“Вывод:”<<endl; print();}

virtual void print (void){cout<<a<<endl;};

A(int v): a(v){}};

class B: public A {int b; public:

void print (void){cout<<b<<endl;};

B(int va, int vb): A(va), b(vb){}};

void main()

{A aa(20), *pa; B bb(10, 100);

//явный вызов полиморфной функции print()  

aa.print(); // вывод:20

bb.print; // вывод:100

//неявный вызов полиморфной функции print()  

aa.show();// вывод:20

bb.show(); // вывод:100

// вызов функции print() по указателю 

pa=&aa; pa->print();// вывод:20

pa=&bb; pa->print(); // вывод:100

}

Таблица виртуальных методов (ТВМ)

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


 

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

53408. Компьютерная среда и алгоритмы 47 KB
  Тема: Компьютерная среда и алгоритмы. Цель: закрепление и проверка знаний учащихся по теме Алгоритмы и изучение нового материала по теме Компьютерная среда Логомиры Задачи: Обучающая: усвоить понятие алгоритма компьютерная среда логомиры. Она называется Компьютерная среда и алгоритмы Напомните мне что такое алгоритм Правильно. Среда каждой программы имеет свои инструменты и допускает определённый набор действий которые можно выполнить.
53409. Настроювання параметрів сторінок. Створення колонтитулів. Робота з редактором формул 651.5 KB
  Тому важливо оформити документ так щоб він гарно виглядав не тільки на екрані але й на аркуші паперу вміти правильно задати параметри сторінки. План Розмір сторінки поля. Орієнтація сторінки. Встановлення параметрів сторінки.
53410. Алгоритми та їх властивості 55 KB
  Алгоритми та їх властивості Епіграф до уроку: Коль кругом все будет мирно Так сидеть он будет смирно; Но лишь чуть со стороны Ожидать тебе войны Иль набега силы бранной Иль другой беды незваной Вмиг тогда мой петушок Приподымет гребешок Закричит и встрепенется И в то место обернется. Навчальна: дати поняття про алгоритм його властивості; навчити розпізнавати алгоритми навколо себе; вміти розрізняти правильно та неправильно сформульовані алгоритми; формувати цілісну уяву про картину всесвіту; формувати науковий світогляд;...
53411. оздание документов в текстовом процессоре 45 KB
  Задачи: помочь учащимся получить представление об офисном пакете OpenOffice познакомиться с возможностями программы Word научить основным операциям редактирования и форматирования текста в Word. Вопрос: Назовите этапы подготовки текстовых документов. Вопрос: Какие операции входят в процесс редактирования текстового документа Ответ: – Исправление ошибок правописание удаление и добавление фрагментов.
53412. Кодирование 71 KB
  Прогнозируемые результаты: Дети познакомятся с новыми понятиям кодирование и декодирование. Дети научатся решать задачи при помощи кодирования и декодирования. № Этапы Деятельность учителя Деятельность учащихся Примечания 1 Организационный момент Здравствуйте дети Меня зовут Алиса Андреевна.Что такое графыКак обозначаются графы Что такое круг Что такое точкаЧто такое стрелочки Дети называют тему.
53413. Сатирическая журналистика второй половины XVIII века. Полемика в изданиях «Трутень» и «Всякая всячина» в аспекте образования и просвещения 122.5 KB
  Целью данной курсовой работы будет являться выявление самых главных вопросов об образовании и просвещении, которые ставили Екатерина II и Новиков, полемизируя на страницах «Всякой всячины» и «Трутня».
53414. Славянские Боги и Богини 111 KB
  Тема: Славѧнские Боги и Богини. Богиня Доля или как ее в древние времена называли Богиня Среча – Небесная Богиня счастливой судьбы счастья и удачи в жизни и в созидательных деяниях. Богиня Доля весьма искусная мастерица и рукодельница. Богиня Доля самая младшая дочь Небесной Богородицы Макоши и она же является младшей сестрой Богини Недоли или как ее называли Нестреча.
53415. Проектирование ПС напряжением 35/10 кВ и электрической сети 10 кВ 8.14 MB
  Электрические нагрузки подстанции определяют для выбора силовых трансформаторов, электрических аппаратов и токоведущих частей, релейной защиты и компенсирующих устройств, а также для расчета потерь электроэнергии в трансформаторах.
53416. Інклюзивне навчання: рівні можливості для кожного 50 KB
  Тренінг для педагогічних працівників Мета: познайомити вчителів з особливостями інклюзивного навчання в сиситемі освіти; сформувати толерантне ставлення до впровадження інклюзивного навчання у закладах освіти. Чи знаєте ви що таке інклюзивне навчанняа так; б ні. Як ви вважаєте чи готова школа створити умови для впровадження інклюзивного навчання а так; б ні; в частково.