89781

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

Лекция

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

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

Русский

2015-05-13

39.45 KB

3 чел.

Полиморфизм

Содержание

Полиморфизм

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

Полиморфизм

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

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

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

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

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

Пример #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

}

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

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


 

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

69223. Статистичні методи вивчення взаємозв’язків 398.5 KB
  Кореляційно-регресійний аналіз зв’язку його завдання і основні етапи. Оцінка щільності та істотності кореляційного зв’язку. При функціональному зв’язку кожному можливому значенню факторної ознаки відповідає чітко визначене значення результативної ознаки тобто...
69224. Статистичне вивчення динаміки соціально-економічних явищ 507.5 KB
  Для будь-якого динамічного ряду характерні перелік хронологічних дат моментів або інтервалів часу і конкретні значення відповідних статистичних показників які називають рівнями ряду. Приймаючи будь-який інтервал за одиницю послідовність рівнів можна записати так: де число рівнів довжина динамічного ряду.
69225. Предмет, метод та завдання статистики 187.5 KB
  Статистика - самостійна суспільна наука, яка має свій предмет и метод дослідження. Виникла вона з практичної необхідності суспільного життя. Уже в давньому світі з’явилась необхідність підраховувати чисельність жителів держави; рахувати людей, пригодних до військової справи...
69226. Графічний метод зображення статистичних даних 334.5 KB
  Вимоги до статистичного графіка та його основні елементи. Слід нагадати що побудова графіка виправдана якщо він дає будьякі переваги порівняно з цифрами які зведені в ряди або таблиці. Основні елементи графіка.
69227. Статистичне зведення та групування 188 KB
  Значення коефіцієнтів наведено в таблиці. Статистичні таблиці їх значення в статистиці види таблиць. Статистичні таблиці призначені для найбільш раціонального наочного та систематизованого викладення результатів зведення і групування статистичних даних.
69228. Індекси. Суть індексів, їх особливості як узагальнюючих показників 143.5 KB
  Термін індекс (іпdех) є синонімом певної узагальнюючої характеристики. Наприклад, індекс реальних доходів населення за рік, індекс курсової вартості цінних паперів за місяць, регіональний індекс злочинності тощо. Кожний індекс є співвідношенням двох значень показника...
69229. Історія формування та розвитку статистики. Статистика у феодальному суспільстві та в епоху відродження. Розповсюдження товарно–грошових відносин та розвиток статистики 74 KB
  Історія вітчизняної соціально-економічної статистики Розвиток державної статистики визначається багатьма умовами і чинниками економічного соціального організаційного характеру. Становлення державної статистики можна віднести до кінця XVII початку XVIII в.
69230. Організація державної статистики в Україні та її структура 128 KB
  Цей Закон регулює правові відносини в галузі статистики і ведення первинного обліку визначає повноваження та функції органів державної статистики і створює основу для ведення державної інформаційної системи України з метою одержання достовірної статистичної інформації...
69231. Організація міжнародної статистики 155.5 KB
  Таким чином послідовна розробка міжнародних рекомендацій в області статистики дозволила МСІ закласти наукові основи міжнародних класифікацій по найважливіших розділах статистики і їх застосуванні але вже опосередковано через діяльність Ліги Націй і через ООН...