8 C ++ características no tan principiantes

El lenguaje C ++ contiene tantas características que los programadores principiantes no pueden entender posiblemente todos. Afortunadamente, usted no tiene que dominar todas las características de la lengua con el fin de escribir, los programas del mundo real grandes. 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. Usted puede colocar Goto etiquetado donde quieras. Cuando C ++ se encuentra con este comando, el control pasa inmediatamente a la etiqueta, como se demostró en este fragmento de código:

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

En la práctica, sin embargo, ir introduce un montón de maneras 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é C Normas introducido descanso y continuar y eliminado casi por completo la necesidad de que la ir comandos.

Operador ternario El C ++

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

int n = (condicional)? expression1: expression2-

los ? operador evalúa primero 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 un máxima () función como sigue:

int max (int n1, n2 int) {return (n1> n2)? n1: N2}

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

Los tipos enumerados en C ++

La simple idea es que se puede definir constantes y dejar que C ++ asignarles 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 tipo de verdad, C ++ utiliza enteros. En este caso, NEGRO se le asigna el valor 0, AZUL Es asignado 1, Green2, etcétera.

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

clase enum Color {NEGRO, AZUL, VERDE, AMARILLO, ROJO} -Colores 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. Usted todavía puede lanzar un objeto de clase Colores en una int, pero no se le 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 biblioteca probablemente asigna un grado, mientras que el grado () función dentro de la Ingeniería civil biblioteca puede establecer la pendiente 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 Ingeniería civil.

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

Todos los objetos y funciones de la biblioteca están en el espacio de nombres std. La declaración al comienzo de la plantilla de programa usando STD- espacio de nombres dice que si usted 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 función no definida se conoce como una función miembro virtual pura. En ese momento, sin embargo, las cosas se complican. Por ejemplo, una clase con una o más funciones virtuales puras se dice que es abstracta y no se puede utilizar para crear un objeto. Frente a este tema después de que se sienta cómodo con las funciones virtuales y el enlace.

La clase string de C ++

La mayoría de las lenguas incluyen 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 así de simple. Porque cuerda no es un tipo intrínseco, los mensajes de error que el compilador genera cuando algo sale 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 en realidad 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. Peor aún es cuando ambas clases base son en sí mismas subclases de una clase común.

De hecho, por lo que muchos de los problemas surgen de que C ++ es el único lenguaje similar a C que soporta la herencia múltiple. Java y C #, los dos idiomas derivados de C ++, decidieron abandonar el apoyo a la herencia múltiple.

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

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

int max (int n1, n2 int) {if (n1> n2) {return n1-} volver N2} doble max (doble n1, n2 doble) {if (n1> n2) {return n1-} volver N2} Char max (n1 char, n2 char) {if (n1> n2) {return n1-} volver N2}

" ¿No sería genial, " uno dice a otro, "? Si pudiera reemplazar el tipo con una de tipo pseudo-T que se podría definir en tiempo de compilación " Antes de que te des cuenta, presto - plantillas de formar parte de C ++:

modelo  T max (T t1, t2 t) {if (t1> t2) {return T1 T2}} return

Ahora el programador puede crear una max (int, int) mediante la sustitución de T con int y la compilación de los resultados, crear un max (doble, doble) mediante la sustitución de T con doble, etcetera. El Comité de Normas incluso lanzó una biblioteca completa 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 usted consigue un mal plantilla de instancias 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.




» » » » 8 C ++ características no tan principiantes