Existen diversas características ligadas a la orientación a objetos. Todas las propiedades que se suelen considerar, no son exclusivas de este paradigma, ya que pueden existir en otros paradigmas, pero en su conjunto definen claramente los lenguajes orientados a objetos.
Propiedades:
– Abstracción (tipos abstractos de datos y clases).
– Encapsulado de datos.
– Ocultación de datos.
– Herencia.
– Polimorfismo.
C++ soporta todas las características anteriores que definen la orientación a objetos, aunque hay numerosas discusiones en torno a la consideración de C++ como lenguaje orientado a objetos.
La razón es que en contraste con lenguajes tales como Smalltalk, Java o C#, C++ no es un lenguaje orientado a objetos puro.
C++ soporta orientación a objetos pero es compatible con C y permite que programas C++ se escriban sin utilizar características orientadas a objetos.
De hecho, C++ es un lenguaje multiparadig-ma que permite programación estructurada, procedimental, orientada a objetos y genérica.