C++/Diferencias con respecto a C
| C++ | ||
| Diferencias con respecto a C | ||
C++ baseouse en C e conserva unha gran parte da súa funcionalidade, pero non son linguaxes completamente compatibles a nivel de código. Existen algunhas diferencias fundamentais que cómpre coñecer:
- C permite maior liberdade á hora de “xogar cos bytes” —o que pode resultar tan beneficioso como prexudicial—.
- Seguen paradigmas de programación distintos: C é unha linguaxe estruturada, mentres que C++ está orientada a obxectos.
- C non ten un tipo booleano ou “lóxico” —cuxo valor pode ser «certo» ou «falso»— nin un para cadeas de texto. Porén, os tipos booleanos poden imitarse mediante un tipo «enum» e trabállase coas cadeas de texto mediante matrices de caracteres.
- Aínda que en C adoita facerse por convención, en C++ é obrigatorio que as funcións se declaren antes de empregarse.
- En C hai que engadir a palabra clave
enumoustructao declarar unha variable do tipo dunha enumeración ou estrutura previamente definida, mentres que en C++ emprégase directamente o nome da estrutura.
- A biblioteca estándar de funcións de C++ é moito máis completa, e permite empregar tamén a de C.
- En C++ as funcións devolven
0de maneira predeterminada, mentres que en C debe especificarse sempre.
- C++ necesita prototipos.
- En C, unha función da forma
f()pode recibir un número calquera de parámetros de calquera tipo, mentres que en C++ non podería recibir ningún parámetro.
- En C,
sizeof('x')equivale asizeof(int), mentres que en C++ equivale asizeof(char).
Asignación implícita dun tipo void*
[editar]En C++ non se pode facer unha asignación implícita dun tipo void* a outro tipo calquera. Por exemplo, a seguinte liña de código é completamente correcta en C (de feito, é probablemente o mellor modo de escribila), pero non compilaría en C++:
int *x = malloc(sizaof(int) * 10);
Memoria dinámica
[editar]En C hai unha única función principal de asignación de memoria, malloc(), que se emprega para asignar memoria tanto a elementos individuais como a matrices, e a memoria sempre se libera mediante a función free().
Porén, en C++ a asignación de memoria para as matrices é algo distinta da asignación de memoria para elementos individuais. Para as primeiras empréganse os operadores new[] e delete[], mentres que para os segundos new e delete.
| C++ | ||
| Diferencias con respecto a C | ||