The C programming language is a very general purpose programming language. It is used to solve problems ranging from operating system kernels, over compilers to graphical user interfaces. C was conceived in the early 1970s by Dennis M. Ritchie. The C programming language was standardized in the mid 1980s.
The C++ programming language was initially created by Bjarne Stroustrup, as a "better C". C++ was an attempt to extend and (to some extent) change the C programming language to overcome some of the common and big problems with the language. C++ was standardized in 1998, and, is a younger language than C.
Numerous features supported by C++ which have no equivalent in C such as object-oriented programming.
When a user defines a type in C++, support is provided in the language to permit that type to behave in a manner similar to types already built into the language. The user can define how the standard operators act upon these user defined types (operator overloading) and how these type can be converted to another type (user defined conversions). The user can also specify how memory is allocated or deallocated when an instance of that type is created or destroyed. This is done through the use of constructors and destructors which are called implicitly by the compiler when an instance of that type is brought into and taken out of scope respectively.
C++ provides support for function prototypes, hence enabling strong type checking of function parameters to take place during compilation. In addition, C++ provides support for the pass by reference mechanism and also supports default arguments to functions. This means that should a function require an argument that often has the same value, the user can default the argument to that value and not pass that parameter when the function is called. In the few cases where the function has to be called with a different value for the default argument, the user simply passes that argument into the function and the new value overrides the default value.
The most important features which C++ has is data encapsulation, inheritance and runtime binding which is the foundation for the language's support for object-orientated programming.
In the case of C against C++
* Speed - the C++ implementation ran as fast or faster than the C implementation
* Generality - the C++ implementation is easily reusable in other projects (unlike the C implementation)
* Usability - the C++ implementation managed its memory properly (unlike the C implementation)
This is particularly useful in safety critical applications.