References:
C++ supports passing and returning references from functions. This greatly
reduces the need to pass pointers into and out of functions, making them
much less susceptible to client miss-use.
Polymorphism:
C++ supports dynamic binding with virtual functions, providing strong support
for building loosely coupled systems. The client of a base class need know only
the protocol provided by the base and need not know the details that distinguish
one derived class from another.