Virtual
Gets resolved at run-time, leading to a shorter compile-time.
#include <iostream> class Animal { public : virtual void makeSound() = 0; }; class Cow : public Animal { public : void makeSound() { std::cout << "Moo" << std::endl; }; }; int main() { Cow cow; cow.makeSound(); return 0; } |
Template
Gets resolved at compile-time, leading to a shorter run-time.
#include <iostream> template < typename T> class Animal { public : void makeSound() { t.makeSound(); }; private : T t; }; class Cow { public : void makeSound() { std::cout << "Moo" << std::endl; }; }; int main() { Animal<Cow> cow; cow.makeSound(); return 0; } |