Overloading
print
extern void print(int);
extern void print(float);
Generic class -- templates
list< T >
template< class T > class list { ... }
list* alist;
Polymorphism by inheritance
shape
class shape { ... };
class circle : public shape { ... }
shape* s = new circle;
slide: Polymorphic type declarations