Similitudes entre C y C++ son:
Sitios web de películas similares a 123movies.
- Ambos idiomas tienen una sintaxis similar.
- La estructura del código de ambos idiomas es la misma.
- La compilación de ambos idiomas es similar.
- Comparten la misma sintaxis básica. Casi todos los operadores y palabras clave de C también están presentes en C++ y hacen lo mismo.
- C++ tiene una gramática ligeramente extendida que C, pero la gramática básica es la misma.
- El modelo de memoria básico de ambos está muy cerca del hardware.
- Las mismas nociones de pila, montón, alcance de archivo y variables estáticas están presentes en ambos lenguajes.

Diferencias entre C y C++ son:
C++ se ve a menudo como un superconjunto de C. C++ también se conoce como C con clase. Esto era casi cierto cuando se creó originalmente C++, pero los dos lenguajes han evolucionado con el tiempo y C ha adquirido una serie de características que no existían. No se encuentra en la versión contemporánea de C++ o aún no se ha incluido en ninguna versión de C++. Dicho esto, C++ sigue siendo principalmente un superconjunto de C que agrega Programación orientada a objetos , Manejo de excepciones , Plantillas y una biblioteca estándar más extensa.
A continuación se muestra una tabla de algunas de las diferencias más obvias y generales entre C y C++. Hay muchas diferencias más sutiles entre los idiomas y entre las versiones de los idiomas.
java
| C | C++ |
|---|---|
| C fue desarrollado por Dennis Ritchie entre los años 1969 y 1973 en AT&T Bell Labs. | C++ fue desarrollado por Bjarne Stroustrup en 1979. |
| C no admite polimorfismo, encapsulación ni herencia, lo que significa que C no admite programación orientada a objetos. | Soportes de C++ polimorfismo , encapsulación , y herencia porque es un lenguaje de programación orientado a objetos. |
| C es (principalmente) un subconjunto de C++. | C++ es (principalmente) un superconjunto de C. |
| Número de palabras clave Cª: * C90: 32 * C99: 37 * C11: 44 * C23: 59 | Número de palabras clave en C++: *C++98:63 *C++11:73 *C++17:73 *C++20:81 |
| Para el desarrollo de código, C admite programación procesal . | C++ se conoce como lenguaje híbrido porque C++ admite ambos procesal y paradigmas de programación orientada a objetos . |
| Los datos y las funciones están separados en C porque es un lenguaje de programación procedimental. | Los datos y las funciones se encapsulan juntos en forma de un objeto en C++. |
| C no admite la ocultación de información. | La encapsulación oculta los datos para garantizar que las estructuras de datos y los operadores se utilicen según lo previsto. |
| Los tipos de datos integrados son compatibles con C. | Los tipos de datos integrados y definidos por el usuario son compatibles con C++. |
| C es un lenguaje basado en funciones porque C es un lenguaje de programación procedimental. | C++ es un lenguaje controlado por objetos porque es una programación orientada a objetos. |
| La sobrecarga de funciones y operadores no es compatible con C. | La sobrecarga de funciones y operadores es compatible con C++. |
| C es un lenguaje basado en funciones. | C++ es un lenguaje controlado por objetos |
| Las funciones en C no están definidas dentro de las estructuras. | Las funciones se pueden utilizar dentro de una estructura en C++. |
| Las características del espacio de nombres no están presentes dentro de C. | Espacio de nombres es utilizado por C++, que evita colisiones de nombres. |
| El encabezado IO estándar es stdio.h . | El encabezado IO estándar es iostream.h . |
| Las variables de referencia no son compatibles con C. | Las variables de referencia son compatibles con C++. |
| Las funciones virtuales y de amigos no son compatibles con C. | Virtual y funciones amigas son compatibles con C++. |
| C no admite la herencia. | C++ admite la herencia. |
| En lugar de centrarse en los datos, C se centra en el método o proceso. | C++ se centra en los datos en lugar de centrarse en un método o procedimiento. |
| C proporciona malloc() y calloc() funciones para asignación de memoria dinámica , y gratis() para la desasignación de memoria. | C++ proporciona nuevo operador para la asignación de memoria y eliminar operador para la desasignación de memoria. |
| C no admite soporte directo para el manejo de excepciones. | Manejo de excepciones es compatible con C++. |
| escaneo() y las funciones printf() se utilizan para entrada/salida en C. | cin y cout se utilizan para entrada/salida en C++ . |
| Las estructuras C no tienen modificadores de acceso. | Las estructuras de C++ tienen modificadores de acceso. |
| No existe una verificación de tipos estricta en el lenguaje de programación C. | Comprobación de tipos estricta realizada en C++. Muchos programas que se ejecutan bien en el compilador de C generarán muchas advertencias y errores en el compilador de C++. |
| C no soporta la sobrecarga | C++ soporta la sobrecarga |
| Se permiten juegos de palabras con uniones (C99 y posteriores) | Los juegos de palabras con sindicatos son un comportamiento indefinido (excepto en circunstancias muy específicas) |
| Los inicializadores con nombre pueden aparecer desordenados | Los inicializadores con nombre deben coincidir con el diseño de datos de la estructura. |
| La extensión del archivo es .c | La extensión del archivo es .cpp o .c++ o .cc o .cxx |
| Metaprogramación: macros + _Generic() | Metaprogramación: plantillas (las macros todavía se admiten pero no se recomiendan) |
| Hay 32 palabras clave en la C. | Hay 97 palabras clave en C ++. |