Autor
|
Tema: C sabiendo C++ (Leído 1,905 veces)
|
Geremy
Desconectado
Mensajes: 3
|
Hola, actualmente estoy programando en C++ , considero que tengo un nivel medio en el mismo y estoy interesado en aprender C que parece útil aprenderlo y mas sabiendo C++ ya que muchas de las cosas son iguales o parecidas, mi pregunta es ¿Que parte de C se diferencia notablemente de C++(porque ya he visto punteros, arreglos, etc y es completamente igual) y que cosas extras tiene C con respecto a C++ que necesite aprender?.
|
|
|
En línea
|
|
|
|
K-YreX
|
C++ es como una expansión de C por lo que todo lo que puedes hacer en C, lo puedes hacer en C++. Como es lógico, C++ es un "avance" por lo que tiene añadidos que facilitan algunas cosas. Por ejemplo en C olvídate de strings (debes usar <char*>), clases(debes usar <struct>), paso por referencia(tendrás que usar punteros), para usar <bool> tienes que incluir <stdbool.h> o usar <int> con valores de 0 y 1. Al no estar orientado a objetos como C++ no tendrás cosas como: ifstream fichero_entrada; fichero_entrada.open("nombre_fichero.txt");
Sino que tendrás: FILE *fichero_entrada; fichero_entrada = fopen("nombre_fichero.txt", "r");
Y si quieres ver más diferencias puedes seguir mirando cómo se hace todo lo que haces en C++ en C. Pero asegúrate de compilar para C porque muchos comenten el error de decir que programan en C pero están compilando en C++ por lo que meten sentencias de C++ que no existen en C y no les da problemas.
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
Geremy
Desconectado
Mensajes: 3
|
Bien gracias, la verdad que lo de los string y bool creía que era igual jeje, gracias por tu respuesta y te hago otra pregunta ¿hay algo que sea exclusivo de C, tengo entendido que tiene mas utilidad en la programación de bajo nivel que C++, es cierto?. Por ultimo he de decir que estoy programando C en visual studio desde el compilador de c++, ¿según entiendo eso estaría mal no?.
|
|
|
En línea
|
|
|
|
K-YreX
|
Hasta donde yo conozco exclusivo de C no ya que C++ es como una "expansión" de C, añade cosas pero no las quita. Lo que pasa es que hay cosas que en C se usan mucho y son muy típicas y en C++ existen otras formas de hacerlo. Utilidad a bajo nivel es la misma lo que pasa es que con C te ves obligado a trabajar a más bajo nivel mientras que con C++ no tienes que hacerlo si no quieres. Al tener esta facilidad en C++ es un paso que normalmente la gente se ahorra cuando aprende. Pero si trabajas con C vas a profundizar mucho más en tus conocimientos a bajo nivel. Tampoco quiero asustar, hay muchas cosas que son como en C++ pero acabarás aprendiendo aspectos de más bajo nivel.
Si compilas como C++, al tener C++ incluido todo lo de C más lo suyo propio, si usas cosas de C++ te las dará por válidas y no sabrás que no puedes usar eso en C. A no ser claro que aprendas primero de forma teórica lo que se puede y lo que no. A mí personalmente me ayudó mucho para diferenciar ambos lenguajes el compilar desde la Terminal de Linux, usando el comando g++ para compilar en C++ y gcc para compilar en C y te olvidas de IDEs, sólo necesitas un editor de textos y la propia Terminal.
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
Loretz
Desconectado
Mensajes: 117
|
El C++ (el primer estándar 98) desciende, es un derivado, del C95 (C90 más las correcciones de 1995). Luego, el C99 y el C++11 son los dos derivados de ese mismo ancestro común, el C95. Entonces, esto quiere decir que el C++11, C++14, C++17 y C++20 son primos, primos 2dos, etc. del C99, tienen al C95 como abuelito en común. En esta página hay una lista con incompatibilidades entre C++98 y C99: http://david.tribble.com/text/cdiffs.htmPor ejemplo, palabras clave del C++98 que no va a reconocer un compilador C99: - bool
- catch
- class
- const_cast
- delete
- dynamic_cast
- explicit
- export
- false
- friend
- mutable
- namespace
- new
- operator
- private
- protected
- public
- reinterpret_cast
- static_cast
- template
- this
- throw
- true
- try
- typeid
- typename
- using
- virtual
- wchar_t
Una lista completa de lo que hace que un programa C++ no compile en C es bastante extensa, los temas serían: - Uniones anónimas
- clases
- constructores y destructores
- excepciones y bloques try/catch
- linkeo de funciones externas (extern "C")
- sobrecarga de funciones
- funciones miembro
- namespaces
- operadores y funciones new / delete
- sobrecarga de operadores
- referencias
- STL (biblioteca estándar C++)
- clases y funciones template
|
|
« Última modificación: 8 Junio 2019, 07:41 am por Loretz »
|
En línea
|
|
|
|
|
|