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:
- object oriented languages all implement "data abstraction" in a clean way using a concept called "classes";
- all object oriented languages try to make parts of programs easily reusable and extensible;
- 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:
- C++ adds a concept called "operator overloading";
- 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)