2014-02-18 2 views
-1

Я знаю, что существует несколько различных способов достижения полиморфизма в C++.Каковы различные способы достижения полиморфизма в C++

Я знаю 3 способа сделать это:

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

Во время технической дискуссии по этой теме мне сказали, что я что-то упустил и остался висящим ... поэтому я задал здесь вопрос.

Есть ли другой способ в C++, чтобы это или что-то я сказал не так?

+0

Это не совсем разные способы. в конце вы будете использовать указатель на базовый класс ... –

+1

Примечание: они, вероятно, были заинтересованы в статическом полиморфизме. –

+1

Вы только говорили о полиморфизме времени выполнения, возможно, мы можем использовать полиморфизм времени компиляции в счетчике, например, при перегрузке шаблонов и funciton. – michaeltang

ответ

2

Ваши три способа на самом деле просто одно: является ли базовый класс аннотация - это деталь реализации; вам нужны виртуальные функции , которые могут быть переопределены в производном классе.

Кроме того: как функция перегрузки, так и шаблоны предоставляют также форму полиморфизма, хотя она разрешена при времени компиляции, а не времени выполнения. В этом случае вы можете определить классв файле заголовка и предоставить для него несколько различных реализаций , в зависимости от таймеров компиляции; Это также форма полиморфизма. (Это часто делается для системного кода. Полиморфизм разрешен как - функция системы, которую вы компилируете.)

0

Я думаю, что ваше обсуждение было связано с различными типами полиморфизма.

  1. Полиморфизм времени компиляции - пример: перегрузка функции, перегрузка оператора.
  2. Полиморфизм времени выполнения - пример: Наследование + виртуальные функции + указатель базового класса.
Смежные вопросы