Simply stated, C++ is a superset of the C language. C++ retains all of C’s strengths, including its power and flexibility in dealing with the hardware/software interface; its low-level system programming; and its efficiency, economy, and powerful expressions. However, C++ brings the C language into the dynamic world of object-oriented programming and makes it a platform for high-level problem abstraction, going beyond even Ada in this respect. C++ accomplishes all of this with a simplicity and support for modularity similar to Modula-2, while maintaining the compactness and execution efficiency of C.
This new hybrid language combines the standard procedural language constructs familiar to so many programmers and the object-oriented model, which you can exploit fully to produce a purely object-oriented solution to a problem. In practice, a C++ application can reflect this duality by incorporating both the procedural programming model and the newer object-oriented model. This biformity in C++ presents a special challenge to the beginning C++ programmer; not only is there a new language to learn, but also a new way of thinking and problem solving.