Bienvenido a Tecnohackers

Tecnohackers » Programacion » Area de Programacion » Programacion a Bajo Nivel. APIs, Hooking, ASM, C/C++, etc.
 » 

C Frente a C++



Autor Tema: C Frente a C++  (Leído 1103 veces)

Conectado zolo

  • Consigliere
  • Master
  • *****
  • Mensajes: 22446
  • Un Mes, Un Año o Toda Una Vida, Da Igual, Estare
C Frente a C++
« en: Noviembre 08, 2015, 09:46:38 am »
C Frente a C++



Introducción

C ha alcanzado una enorme popularidad en la década de los ochenta y se ha convertido en uno de los lenguajes más utilizado de la década de los noventa. Sin embargo, C tiene defectos y limitaciones que lo hacen inadecuado para proyectos de programación complejos. C++ es un intento de mejorar C ampliando sus características para soportar nuevos conceptos de desarrollo de software.

Este documento se ha escrito pensando —en gran medida— en programadores de C que desean emigrar a C++. Para ello, el primer paso a dar es explicar las diferencias entre la definición actual ANSI de C y la definición ANSI/ISO C++ Standar. El siguiente paso consistirá en examinar cómo se utilizan las funciones en C++. Los restantes apartados describirán cómo se diseñan y escriben programas en C++ y las razones por las cuales los programadores actuales piensan que C++ es una de las mejores herramientas en el campo de la ingeniería del software.

1. Limitaciones de C

C, pese a su enorme popularidad, tiene reconocidas diferentes limitaciones. Algunas de ellas son:
No se pueden definir nuevos tipos. La facilidad typedef es esencialmente un mecanismo para especificar un sinónimo de un tipo existente.

Las declaraciones de funciones no ayudan a la verificación de tipos en las llamadas a funciones. Las versiones K&R de C no especificaban nada sobre tipos de parámetros. En ANSI C se ha introducido la declaración de tipos de los parámetros, pero de modo opcional. C++ exige de modo obligatorio los prototipos.

Cuando las funciones se compilan separadamente, no se realiza ninguna verificación para asegurar que los tipos de argumentos corresponden a los tipos de parámetros. Si una función se compila separadamente, los compiladores C no verifican que esta función es llamada consistentemente con respecto a su definición.

No existen tipos de coma flotante de simple precisión. Todas las variables de tipo float se convierten a double en expresiones o cuando se pasan como argumentos. C++ soporta float como un tipo distinto.

Sin embargo, aunque C++ es un super conjunto de C, la compatibilidad entre los dos lenguajes no es perfecta. Este documento le muestra las áreas de incompatibilidad que es necesario tener presente en el diseño de cualquier programa en lenguaje C y C++.

2. Mejora de características de C en C++

C++ incorpora nuevas características no encontradas en ANSI C. Las mejoras se pueden agrupar en tres categorías:

1.-Características de C++ que potencian C.
2.-Extensiones al sistema de tipos de datos que permite disponer tipos definidos por el usuario más robustos (fuertes).
3.-Extensiones que incorporan propiedades OO

Caracteristicas que potencia C

* Nuevo estilo de comentarios: Proporcionan mejora en legibilidad de código.
* Tipos referencia: Permiten paso de parámetros por referencia.
* Funciones en línea: Permite que las funciones se expandan en línea; similares a las más macros, pero mayor eficacia de código.
* Sobrecarga de operadores: Los operadores estándar de C pueden trabajar con tipos definidos por el usuario, tal como un operador que sume números complejos, cadenas o matrices.
* Parámetros por omisión Permite especificar valores por omisión para parámetros de funciones.
* Sobrecarga de funciones: Permite que un grupo de funciones con nombres similares realicen tareas diferentes cuando son invocadas.

Caracteristicas de C++ frente a C

Extensiones de tipos:

* Tipos definidos por el usuario (struct, union, enum)
* Prototipos de funciones
* Asignación de memoria (new, delete)
* Enlace con seguridad de tipos.
* Biblioteca de flujos
* Conversiones de tipos definidos por el usuario

Potencian C:

* Comentarios en una linea
* Funciones en linea
* Tipos de referencia
* Sobrecarga de funciones
* Sobrecarga de operadores
* Parámetros por omisión

Orientada a objetos:

* Clases control de acceso
* Clases derivadas
* Funciones virtuales
* Funciones amigas
* Constructores
* Destructores

Extensión (ampliación) en los sistemas de tipos de datos

* Prototipos de funciones: Proporcionan verificaciones de tipos en las llamadas a funciones.
* Las etiquetas de struct, union yenum: Simplifica la sintaxis de los tipos son nombres de tipos definidos por el usuario.
* Operadores de asignación de memoria: Soporta asignación dinámica de tipos definidos por el usuario, esto hace la administración dinámica de memoria más segura.
* Enlazado con seguridad de tipos Captura errores de paso de parámetros realizando verificación de tipos en tiempo de enlace.
* Biblioteca de nuevos flujos Permite mayor flexibilidad en la entrada y salida de tipos definidos por el usuario, soporta entrada/salida (E/S) orientada a objetos; permite especificar rutinas para convertir de un tipo a otro.

Extensiones orientadas a objetos

* Clases: Permite a las funciones y datos agruparse juntos, se utilizan para crear objetos.
* Control de acceso Permite restringir el acceso a los datos y funciones de una clase.
* Clases derivadas Clases que heredan propiedades de las clases base existentes y permite la reutilización y extensión de clases.
* Funciones amigas: Permite acceso selectivo a miembros de acceso restringido de una clase.
* Funciones virtuales Mecanismo que facilita el polimorfismo y que determina la función a llamar en tiempo de ejecución, no en tiempo de compilación.
* Constructores Crean las funciones definidas por el usuario para la inicialización de objetos.
* Destructores Se llaman automáticamente para limpiar memoria cuando los objetos se tienen que borrar o liberar.

Fuente: Zephomet / el-hacker.com
You are not allowed to view links. Register or Login

Tags:
Tags:

 


SMF 2.0.19 | SMF © 2016, Simple Machines
Paginas Afiliadas
Twitter - FaceBook - Daraxblog
Designed by Smf Personal