"C++ is an "object oriented" language. Object oriented
programming is a reaction to programming problems that were first
seen in large programs being developed in the 70s. All object
oriented languages try to accomplish three things as a way of
thwarting the problems inherent in large projects: (1) object
oriented languages all implement "data abstraction" in a clean way
using a concept called "classes"; (2) all object oriented languages
try to make parts of programs easily reusable and extensible; (3)
object oriented languages try to make existing code easily
modifiable without actually changing the code.
Since C++ is an object oriented language, it possesses
the three object oriented benefits discussed above. C++ adds
two other enhancements of its own to clean up problems in the
original C language or to make programming in C++ easier
than it is in C: (1) C++ adds a concept called "operator
overloading"; (2) C++ also cleans up the implementation of
several portions of the C language, most importantly I/O and memory
allocation.
C++ solves many other problems as well. For example, it
solves the "common code replicated in many places" problem by
letting you factor out common code in a third dimension. It solves
the "I want to change the parameter type passed into a function
without changing the function" problem by letting you overload the
same function name with multiple parameter lists. It solves the "I
want to make a tiny change to the way this works, but I don't have
the source for it" problem, and at the same time it also solves the
"I want to redo this function completely but not change the rest of
the library" problem using inheritance. It makes the creation of
libraries much cleaner. It drastically improves the maintainability
of code. And so on." (Marshall Brain & Kelly Campbell)