One of the most commonly known differences between the two programming languages is that C++ supports OOP and C does not.
C was originally built to be a procedural programming language
and it is not practical to implement (OOP) object-oriented programming in C.
C++ supports multiple programming paradigms and multiple inheritance and OOP is one of the programming paradigms
For example, C++'s parameterized templates allow for generic programming
C++ has a few characteristics of functional programming
(in the form of function pointers).
Furthermore, you can assume that any C++ feature relating to classes does not exist in C, including concepts like
- friends and
- virtual functions.
One can summarize the differences between the languages through the following statement:
C++ has better support for multiple programming paradigms when compared to C.
With minor exceptions, C++ is a superset of C and most differences stem from the fact that C++ has greater emphasis on type checking.
Well-written C programs tend to be C++ programs as well and a compiler can diagnose every difference between C++ and C. Most C code is Classic C or C99.
Classic C has two main descendants:
- ISO C and
- ISO C++.
Over the years, these languages have evolved at different paces and in different directions.
One result of this is that each language provides support for traditional C-style programming in slightly different ways.
The resulting incompatibilities can make life challenging for people who use both C and C++:
- For people who write in one language using libraries implemented in the other,
- and for implementers of libraries and tools for C and C++.