Expressões e declarações em programação c ++

Video: Linguagem C Descomplicada

Para executar um cálculo no programa C ++ você precisa de uma expressão. Uma expressão é uma declaração que tem tanto um valor e um tipo. No programa C ++, uma declaração é a declaração que define uma variável ou é um “tanque de retenção” para algum tipo de valor como um número ou caractere.

Expressões

Expressões tomar uma das seguintes formas:

objname // para uma expressão objectoperator simples // para unário expr2 operador operatorsexpr1 // para operatorsexpr1 binário? expr2: expr3 // para o operatorfuncName ternária ([lista de argumentos]) - // para chamadas de função

expressões literais

Um literal é uma forma de expressão constante. Os vários tipos de literais são definidas na tabela a seguir.

ExemploTipo
1int
1Llong int
1LLint long long
1.0Duplo
1.0Fflutuador
‘1’Caracteres
"uma linha"char * (terminado automaticamente com um caractere nulo)
L”uma corda”wchar_t *
u8 "esta é uma string UTF-8 com um personagem UTF-8: u2018"char8_t *
u”esta é uma string UTF-16 com um personagem UTF-16: u2018"char16_t *
U”esta é uma string UTF-32 com um personagem UTF-32:
U00002018 "
char32_t *
verdadeiro falsobool
0b101binário (C ++ 2014 padrão)

declarações

Declarações utilizar ambos os tipos intrínsecos e definido pelo utilizador. Os tipos são intrínsecas

[]Caracteres[] Wchar_t [] [] Intfloat [longa] doublebool

Declarações ter uma das seguintes formas:

Video: Programação em C++

[] [Const] type var [= expressão] - // variável [] [const] tipo de matriz [tamanho] [= {lista}] - // matriz [const] type objecto [(lista de argumentos)] - // objecto [const] type objecto [= {lista de argumentos}] - [const] // alternativa digitar * [const] ptr [= expressão ponteiro] - // pointertype& refname = object- // referenceType fnName ([lista de argumentos]) - // função

a palavra-chave auto pode ser usado se C ++ pode determinar o tipo de variável si:

auto var = 1L- // o tipo de var é longa int

a palavra-chave decltype extrai o tipo de expressão. Este tipo pode ser usado sempre que um nome de tipo é usado. Por exemplo, o exemplo seguinte usa decltype para declarar uma segunda variável com o mesmo tipo como uma variável existente:

decltype (Q1) var2- // o tipo de var2 é o mesmo que var1

A definição de função tem o seguinte formato:


// função simples [] digite fnName (lista de argumentos) {...} // função de membro definidas fora da classe [linha] tipo Class :: func (lista de argumentos) [Const] {...} // construtor / destruidores também pode ser definida fora de classClass :: Class ([lista de argumentos]) {...} Classe Class :: ~ () {...} // construtores / destructor podem ser eliminados ou inadimplentes // em vez de definitionClass: : Classe ([lista de argumentos]) = -Class :: ~ Class () = -

Um operador sobrecarregado parece uma definição de função. Mais operadores sobrecarregados podem ser escritos ou como membro ou funções simples. Quando escrito como uma função de membro, *esta é o primeiro argumento assumido para o operador:

Minha classe& operador + (const MyClass& m1, MyClass const& m2) - // simpleMyClass& MyClass :: operator + (const MyClass& m2) - // member-

Os usuários também podem definir seus próprios tipos usando o classe ou structpalavras-chave:

 ClassName [: [virtual] [público] ClasseBase] {: // constructorClassName ([lista arg]) lt; [: membro (val), ...] {...} | -gt; ClassName () [= -] // destructor [virtual] ~ ClassName () lt; {...} | [= -gt; // memberstype dados públicos dataMemberName [= initialValue] - // membro do público functionstype memberFunctionName ([lista arg]) [{...}] // const membro FunctionType memberFunctionName ([lista arg]) const [{ ...}] // virtual tipo de membro functionsvirtual memberFunctionName ([lista arg]) [{...}] - // virtual pura tipo de membro functionsvirtual memberFunctionName ([lista arg]) = 0 - // função que deve substituir um classe base FunctionType memberFunctionName ([lista arg]) Accionamento - // uma função que não pode ser substituído em uma memberFunctionName subclasstype ([lista arg]) final -} -

Além disso, um construtor com um único argumento pode ser marcado como explícito o que significa que ele não irá ser usado em uma conversão implícita de um tipo para outro. Sinalizando um construtor como padrão significa “usar o padrão definição construtor C ++”. Sinalizando um construtor como excluir remove definição construtor padrão C ++.

C ++ suporta dois tipos de tipos enumerados. O seguinte tipo de enumeração de idade não cria um novo tipo:

enum ESTADO {DC, // recebe 0ALABAMA, // recebe 1ALASKA, // recebe 2ARKANSAS, // recebe 3 // ... e assim por diante} -int n = ALASKA- // ALASKA é do tipo int

Por padrão uma entrada individual é do tipo int mas isso pode ser alterado no padrão C ++ 2011:

enum ALFABETO: char {A = `a`, // recebe `A`B, // recebe` B`C, // recebe `c` // ... e assim por diante} -char c = A- // Um é do tipo char

C ++ 2011 permite que um segundo formato que cria um novo tipo:

// o seguinte enumeração define um estado nova classe tipo STATEenum {DC, // recebe 0ALABAMA, // recebe 1ALASKA, // recebe 2ARKANSAS, // recebe 3 // ... e assim por diante} -Estado s = ESTADO :: ALASKA- // agora ESTADO é um novo tipo // o seguinte utiliza um alfabeto classe typeenum subjacente diferente: char {a = `a`, // recebe `A`B, // recebe `B`C, // recebe` c `// ... e assim por diante} -Alfabeto c = ALFABETO :: A- // Um ​​é do tipo ALFABETO

declarações de gabarito têm um formato ligeiramente diferente:

// tipo T é fornecido pelo programador em usetemplate  Tipo functionname molde ([lista arg])  class ClassName {{...}} -

Publicações relacionadas