Compile-Time и Runtime Polymorphism
Compile-time Polymorphism(полиморфизм времени компиляции) - полиморфизм, который разрешается на этапе компиляции. Пример такого полиморфизма - использование шаблонов.
Runtime Polymorphism - обычный, наиболее распространенный полиморфизм, который разрешается на этапе исполнения(запуска) программы.
Пример полиморфизма времени компиляции :
#include <iostream>
template <class T>
struct my_template {
T foo;
my_template() : foo(T()) {}
};
template <>
struct my_template<int> {
enum { foo = 42 };
};
int main() {
my_template<int> x;
my_template<long> y;
my_template<std::string> z;
std::cout << x.foo << std::endl;
std::cout << y.foo << std::endl;
std::cout << z.foo << std::endl;
return 0;
}
Пример полиморфизма времени исполнения :
void foo(float);
void foo(int);