8 C ++ características no tan principiantes

El lenguaje C ++ contiene tantas características que los programadores principiantes no pueden entender posiblemente cada uno. Afortunadamente, no es necesario dominar todas las características de la lengua con el fin de escribir grandes programas, en el mundo real. A continuación se presentan diez características que usted puede desear para mirar hacia adelante a, en caso de que los ve en programas de otras personas.

El comando Goto C ++

Este comando va todo el camino de vuelta a C, el progenitor de C ++. En principio, el uso de este comando es fácil. Puede colocar Goto Label- donde quieras. Cuando C ++ viene a través de este comando, el control pasa inmediatamente a la etiqueta, como se demuestra en este fragmento de código:

 para (-) {if (expresión condicional) {Goto outahere -} // ... lo que quieras ...} outahere: // ... programa continúa aquí ...

En la práctica, sin embargo, ir introduce una gran cantidad de formas de meter la pata. En cualquier caso, no pasó mucho tiempo antes de que los programadores se dieron cuenta de que los dos usos más comunes de la ir eran para salir de bucles y para ir al siguiente caso, dentro de un bucle. El Comité de Normas C introducido descanso y continuar y casi completamente eliminado la necesidad de que el ir mando.

El operador ternario C ++

los operador ternario es un operador único a C y C ++. Funciona de la siguiente manera:

int n = (condicional)? expression1: expression2-

los ? operador evalúa en primer lugar la condicional. Si la condición es verdadera, entonces el valor de la expresión es igual al valor de expresión1- de lo contrario, es igual al valor de expresión2.

Por ejemplo, se podría implementar una máximo() función como sigue:

int max (int n1, n2 int) {return (n1 gt; n2)? n1: n2}

El operador ternario se puede aplicar a cualquier tipo de numérico pero no puede ser sobrecargado. El operador ternario es verdaderamente una expresión - no es una sentencia de control como una Si.

Los tipos enumerados en C ++

La simple idea es que se puede definir constantes y dejar que C ++ les asigna valores, como se muestra aquí:

enum {Colores negro, azul, verde, amarillo, rojo} -Colores myColor = BLACK-

El problema con los tipos enumerados radica en la aplicación: En lugar de crear un cierto tipo, C ++ utiliza enteros. En este caso, NEGRO se le asigna el valor 0, AZUL es asignado 1, Green2, y así.

La biblioteca estándar de C ++ 2011 para “fijar” este problema mediante la creación de un tipo de clase enumerada como se muestra en el siguiente fragmento:

Colores clase enum {NEGRO, azul, verde, amarillo, rojo} -colors Mycolor = Colores :: BLACK-

En esta versión, Colores es un nuevo tipo. Cada una de las constantes, NEGRO, AZUL, y así sucesivamente, son miembros de Tipo Colores. Todavía se puede convertir un objeto de la clase Colores en una int, pero no se permite una conversión implícita.

espacios de nombres de C ++

Es posible dar diferentes entidades en las dos bibliotecas diferentes del mismo nombre. Por ejemplo, el grado() función dentro de la Estudiante Probablemente biblioteca asigna una calificación, mientras que el grado() función dentro de la Ingeniero civil biblioteca puede definir la inclinación de la ladera de una colina. Para evitar este problema, C ++ permite al programador para colocar su código en un espacio de nombres separado. Así, el grado dentro de la Estudiante espacio de nombres es diferente del grado dentro de Ingeniero civil.

Video: 01 - Qué debo saber antes de empezar a Programar en Lenguaje C (ProgC)

El espacio de nombres está por encima y más allá del nombre de la clase. los grado() función miembro de la clase Excavadora en el Ingeniero civil espacio de nombres tiene el nombre extendido Ingeniería Civil :: :: Niveladora grado ().

Todos los objetos de la biblioteca y las funciones están en el espacio de nombres std. La declaración al comienzo de la plantilla del programa usando STD espacio de nombres dice que si no ve el objeto especificado en el espacio de nombres predeterminado, a continuación, ir a buscar en std.

funciones virtuales puras en C ++

Usted no tiene que definir una función declarada virtual. Tal una función no definida es conocida como una función miembro virtual pura. En ese momento, sin embargo, las cosas se complican. Por ejemplo, se dice que una clase con una o más funciones virtuales puras a ser abstracta y no puede ser usado para crear un objeto. Abordar este tema después de que se sienta cómodo con las funciones virtuales y el enlace en tiempo.

Video: Aprende Programación en C++ || Programación ATS

La clase string de C ++

La mayoría de los idiomas incluyen una cuerda clase como un tipo intrínseco para el manejo de cadenas de caracteres fácilmente. En teoría, la clase string debería hacer lo mismo para C ++. En la práctica, sin embargo, no es tan simple. Porque cuerda no es un tipo intrínseco, los mensajes de error que el compilador genera cuando algo va mal se parecen más a los asociados con las clases definidas por el usuario. Para un principiante, estos mensajes pueden ser muy difíciles de interpretar.

cuerda no es ni siquiera una clase. Es una instancia de una clase de plantilla. Los mensajes de error pueden ser impresionantes.

La herencia múltiple en C ++

Una clase de hecho se puede extender más de una clase base. Esto suena simple, pero puede llegar a ser muy complicado cuando las dos clases de base contienen funciones miembro con el mismo nombre. Lo que es peor es cuando ambas clases de base son a su vez subclases de una clase común.

De hecho, surgen tantos problemas que C ++ es el único lenguaje similar a C que soporta la herencia múltiple. Java y C #, los dos idiomas derivados de C ++, decidió retirar el apoyo a la herencia múltiple.

C ++ plantillas y la biblioteca de plantillas estándar

Los fabricantes de C ++ notado cómo funciones similares como las siguientes son las siguientes:

int max (int n1, n2 int) {if (n1 gt; n2) {return n1 n2}} regresar doble máx (doble n1, n2 doble) {if (n1 gt; n2) {return n1 n2} return} carbón max (n1 carbón, carbón n2) {if (n1 gt; n2) {return n1 n2}} return

“¿No sería bueno”, uno le dice al otro, “si se puede sustituir el tipo con un tipo de pseudo-T que se podría definir en tiempo de compilación?” Antes de saber que, presto - plantillas se convierten en parte de C ++:

modelo  Tmáx (T t1, t2 T) {if (t1 gt; t2) {return T1-T2}} return

Ahora el programador puede crear una max (int, int) reemplazando T con int y la compilación de los resultados, crear una max (doble, doble) reemplazando T con doble, Etcétera. El Comité de Normas incluso lanzó toda una biblioteca de clases, conocida como la Biblioteca de plantillas estándar (STL para abreviar), basado en clases de plantilla.

Para un principiante, sin embargo, el tema de clases de plantilla empieza a ser sintácticamente muy complicado. Además, los errores que el compilador genera cuando se obtiene un mal instancias de plantilla son desconcertantes para un experto, no importa un principiante. Este es sin duda un tema que tiene que esperar hasta que se sienta cómodo con el lenguaje básico.

Artículos Relacionados