He leído en tutoriales que C++ contiene todo el lenguaje de programación C.
Sin embargo, también he leído, en lugares como este , que
Si aprende C ++, eventualmente aprenderá la mayor parte de C con algunas diferencias entre los idiomas que aprenderá con el tiempo.
Entonces mi pregunta es solo esta:
Si conozco muy bien C ++, ¿aprenderé eventualmente el lenguaje C "real" (sin ninguna "diferencia") porque el lenguaje C90 completo está incluido en C ++ 11?
No, C++ no es un superconjunto del lenguaje C. Si bien C ++ contiene una gran parte de C, existen diferencias sutiles que pueden afectarlo gravemente donde menos lo espera. Aquí hay unos ejemplos:
void a variables de tipo concreto.const .int implícita", que, aunque se eliminó con C99, aparece algunas veces y debe tenerse en cuenta.a ? b : c = d es un error de sintaxis en C pero analizado como a ? b : (c = d) en C++.&*E es exactamente idéntico a E , incluso si E es un puntero nulo. C++ no tiene tal garantía.\0 . (es decir, char foo[3] = "bar" es legal). En C++, la matriz debe ser al menos tan larga como la cadena, incluido el byte final \0 .'A' tiene tipo int . En C++, tiene tipo char .C tiene una regla especial para hacer que los juegos de palabras mediante uniones sean legales. C++ carece de este lenguaje, haciendo código como
union intfloat { int i; float f; } fi; fi.f = 1.0; printf("%d\n", fi.i);comportamiento indefinido.
Si conozco muy bien C ++, eventualmente aprenderé el lenguaje C "real" (sin ninguna "diferencia")
Si aprende C++ correctamente, probablemente no necesitará usar muchas de las técnicas estándar utilizadas en C. En teoría, podría programar casi cualquier cosa C en C++, con las excepciones que ya se han presentado. Sin embargo, en realidad, no lo harías, o no deberías hacerlo . Esto se debe a que C ++ es un lenguaje diferente que proporciona un conjunto de herramientas muy diferente cuando se usa de manera óptima.
Aparte de los elementos muy básicos como la sintaxis general y los tipos fundamentales, estos son dos lenguajes que evolucionan por separado y deben abordarse (aprenderse, programarse) como tales.
En términos generales, el lenguaje C++ es esencialmente C con un montón de cosas añadidas orientadas a objetos. Casi todo el código que podría escribir en C también se compilará y ejecutará sin problemas en C++.
Sin embargo, hay algunos rincones de los idiomas donde hay diferencias. El número de estos ha ido creciendo lentamente con el tiempo, pero los idiomas no están cambiando lo suficientemente rápido como para que eso sea un problema significativo.
Si solo aprende C++, entonces sí, eventualmente también aprenderá casi todos los aspectos del lenguaje C. Si se vuelve un experto en C++, podrá identificar y comprender los lugares donde existen pequeñas diferencias entre las partes similares de C y C++.