Expresiones y declaraciones en la programación c ++
Para realizar un cálculo en el programa en C ++ que necesita una expresión. Una expresión es una declaración que tiene un valor y un tipo. En el programa de C ++, una declaración es la declaración que define una variable o se trata de un "tanque de retención" de algún tipo de valor como un número o carácter.
Expresiones
Expresiones tomar una de las siguientes formas:
objName // para una simple expresión objectoperator // para unario expr2 operador operatorsexpr1 // para operatorsexpr1 binario? expr2: expr3 // para el operatorfuncName ternaria ([lista de argumentos]) - // para las llamadas de función
Expresiones literales
Un literal es una forma de expresión de la constante. Los diversos tipos de literales se definen en la siguiente tabla.
Ejemplo | Escribe |
---|---|
1 | int |
1L | long int |
1LL | long long int |
1.0 | doble |
1.0f | flotador |
'1' | Char |
"una cuerda" | char * (terminado de forma automática con un carácter nulo) |
L "una cadena" | wchar_t * |
u8 "esto es una cadena UTF-8 con un carácter UTF-8: u2018" | char8_t * |
u "esto es una cadena UTF-16 con un carácter UTF-16: u2018" | char16_t * |
U "esto es una cadena UTF-32 con un carácter UTF-32: U00002018" | char32_t * |
verdadero Falso | bool |
0b101 | binaria (C ++ 2014 estándar) |
Declaraciones
Declaraciones utilizan ambos tipos intrínsecos y definidos por el usuario. Los tipos son intrínsecas
[] char [ ] wchar_t [ ] [ ] Intfloat [doublebool largo]
Declaraciones tienen una de las siguientes formas:
[] [const] escriba var [= expresión] - // variable [] [const] tipo array [size] [= {list}] - // array [const] tipo de objeto [(lista de argumentos)] - // objeto [const] tipo de objeto [= {lista de argumentos}] - // alternativa [const] escriba * [const] ptr [= expresión puntero] - // pointertype refname = a objetos // referencetype fnName ([lista de argumentos]) - // función
La palabra clave auto se puede utilizar si C ++ puede determinar el tipo de variable en sí:
var auto = 1L- // el tipo de var es long int
La palabra clave decltype extrae el tipo de una expresión. Este tipo puede ser utilizada siempre que se utilice un nombre de tipo. Por ejemplo, el siguiente ejemplo se utiliza decltype para declarar una segunda variable del mismo tipo como una variable existente:
decltype (var1) var2- // el tipo de var2 es el mismo que var1
Una definición de función tiene el siguiente formato:
// Función simple [] escriba fnName (lista de argumentos) {...} // función miembro definido fuera de clase [en línea] Tipo Clase :: func (lista de argumentos) [const] {...} // Constructor / destructores También puede definirse fuera del classClass :: Clase ([lista de argumentos]) {...} Clase :: ~ Clase () {...} // constructores / destructor se pueden eliminar o incumplieron // en lugar de definitionClass: : Clase ([lista de argumentos]) = -Clase :: ~ Clase () = -
Un operador sobrecargado parece una definición de función. La mayoría operadores sobrecargados pueden escribir, ya sea como miembro o funciones simples. Cuando se escribe como una función miembro, *esta es el primer argumento supone que el operador:
Mi clase operador + (const MyClass m1, MiClase const m2) - // simpleMyClass MyClass :: operator + (const MyClass m2) - // membresía
Los usuarios también pueden definir sus propios tipos de uso de la clase o struct palabras clave:
NombreClase [: [virtual] [público] BaseClass] {: // constructorClassName ([lista arg]) lt; [: miembro (val), ...] {...} | -> NombreClase () [= -] // destructor [virtual] ~ NombreClase () lt; {...} | [= -> // Memberstype datos públicos dataMemberName [= initialValue] - // miembro público functionstype memberFunctionName ([lista arg]) [{...}] // const memberFunctionName FunctionType miembro ([lista arg]) const [{. ..}] // virtual de tipo functionsvirtual miembro memberFunctionName ([lista arg]) [{...}] - // pura virtual de tipo functionsvirtual miembro memberFunctionName ([lista arg]) = 0 - // función que tendrá prioridad sobre una base clase FunctionType memberFunctionName ([lista arg]) Accionamiento - // una función que no puede ser pasada por alto en un memberFunctionName subclasstype ([lista arg]) final -} -
Además, un constructor con un solo argumento puede ser marcado como explícito lo que significa que no será utilizado en una conversión implícita de un tipo a otro. Cómo marcar un constructor como por defecto significa "utilizar el valor predeterminado definición constructor de C ++". Cómo marcar un constructor como borrar elimina la definición del constructor por defecto C ++.
C ++ es compatible con dos tipos de tipos enumerados. El siguiente tipo de enumeración de edad no crea un nuevo tipo:
enum ESTADO {// DC, recibe 0ALABAMA, // obtiene 1ALASKA, // obtiene 2ARKANSAS, // obtiene 3 // ... y así sucesivamente} -INT n = Alaska- // ALASKA es de tipo int
Por defecto una entrada individual es de tipo int pero esto se puede cambiar en el estándar C ++ 2011:
enum ALFABETO: char {A = 'a', // obtiene 'A'B, // obtiene' B'C, // obtiene 'c' // ... y así sucesivamente} -char c = A- // Una es de tipo char
C ++ 2011 permite a un segundo formato que sí crea un nuevo tipo:
// La siguiente enumeración define una nueva clase de tipo STATEenum ESTADO {DC, // obtiene 0ALABAMA, // obtiene 1ALASKA, // obtiene 2ARKANSAS, // obtiene 3 // ... y así sucesivamente} -Estado s = ESTADO :: Alaska- // ahora ESTADO es un nuevo tipo // la siguiente utiliza una diferente subyacente ALFABETO clase typeenum: char {A = 'a', // obtiene 'A'B, // obtiene' B'C, // obtiene ' c '// ... y así sucesivamente} -ALPHABET c = ALFABETO :: A- // Una es de tipo ALFABETO
Declaraciones de plantilla tienen un formato ligeramente diferente:
Tipo // T es proporcionada por el programador en usetemplateTipo nombrefunción ([lista arg]) plantilla clase NombreClase {{...}} -