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