C is a procedural programming language that does not support object-oriented programming features like polymorphism, operator overloading, or inheritance. C++ builds on C by adding object-oriented programming capabilities, including virtual functions, polymorphism, operator overloading, inheritance, and data abstraction through the use of classes and objects. Other differences include C++ supporting namespaces to avoid name collisions, more flexible input/output functions, and memory management using new/delete operators instead of malloc/free functions.