C++ supports three main programming paradigms: procedural, modular, and object-oriented. Object-oriented programming views a problem in terms of objects rather than procedures. Key concepts of OOP include data encapsulation, inheritance, polymorphism, and abstraction. A class defines common properties and relationships through data fields and methods. Inheritance allows classes to inherit capabilities from parent classes in a hierarchy. Polymorphism allows the same message to be processed in different ways depending on an object's class.