8 C ++ características não tão iniciantes
A linguagem C ++ contém tantos recursos que programadores iniciantes não podem compreender cada um. Felizmente, você não precisa dominar todas as características da linguagem, a fim de escrever grandes programas, no mundo real. Seguem-se dez características que você pode querer olhar em frente para, apenas no caso de você vê-los em programas de outras pessoas.
Conteúdo
- O comando goto c ++
- O operador ternário c ++
- Os tipos enumerados em c ++
- Video: parte 11 (dev-c++) - resolução de exercício (repetição)
- Namespaces c ++
- Video: c++ - aula 01 - introdução ao curso
- Funções virtuais puros em c ++
- Classe string do c ++
- Video: escala de do no violão para iniciantes
- Herança múltipla em c ++
- C ++ modelos eo standard template library
- Video: curso básico de c/c++: aula 1 - conhecendo a linguagem
O comando Goto C ++
Este comando vai todo o caminho de volta para C, o progenitor de C ++. Em princípio, usando este comando é fácil. Você pode colocar Goto label- onde você quiser. Quando C ++ vem através deste comando, o controlo passa imediatamente para o rótulo, como demonstrado neste fragmento de código:
para (-) {if (expressão condicional) {Goto outahere -} // ... o que quiser ...} outahere: // ... programa continua aqui ...
Na prática, porém, vamos para introduz uma série de maneiras para estragar. Em qualquer caso, não demorou muito para que os programadores notaram que os dois usos mais comuns da vamos para foram para sair voltas e ir para o próximo caso dentro de um loop. O Comité C Critérios introduzido pausa e continuar e quase completamente removida a necessidade da vamos para comando.
O operador ternário C ++
o operador ternário é um operador único para C e C ++. Ele funciona da seguinte forma:
int n = (condicional)? expression1: expression2-
o ? operador avalia o primeiro condicional. Se a condição for verdadeira, então o valor da expressão é igual ao valor de expressão1- caso contrário, é igual ao valor de expressão2.
Por exemplo, você poderia implementar um máximo() função como se segue:
int max (n1 int, int n2) {return (n1 gt; n2)? n1: N2-}
O operador ternário pode ser aplicado a qualquer tipo de numérico, mas não pode ser sobrecarregado. O operador ternário é verdadeiramente uma expressão - não uma declaração de controle como um E se.
Os tipos enumerados em C ++
A simples idéia é que você pode definir constantes e deixe C ++ atribuir-lhes valores, como mostrado aqui:
Video: Parte 11 (Dev-C++) - Resolução de Exercício (Repetição)
enum Cores {preto, azul, verde, amarelo, vermelho} -Cores myColor = BLACK-
O problema com os tipos enumerados está na implementação: Em vez de criar um verdadeiro tipo, C ++ usa inteiros. Nesse caso, PRETO é atribuído o valor 0, AZUL é atribuído 1, Green2, e assim por diante.
A Biblioteca Standard 2011 para C ++ “fixo” este problema criando um tipo de classe enumerado como mostrado no seguinte trecho:
classe enum Cores {PRETO, azul, verde, amarelo, vermelho} -Cores Mycolor = Cores :: BLACK-
Nesta versão, cores é um novo tipo. Cada um dos constantes, PRETO, AZUL, e assim por diante, são membros do tipo cores. Você ainda pode lançar um objeto da classe cores em um int, mas uma conversão implícita não é permitido.
namespaces C ++
É possível dar entidades diferentes em duas bibliotecas diferentes do mesmo nome. Por exemplo, a grau() função dentro do Aluna biblioteca provavelmente atribui um grau, enquanto que o grau() função dentro do Engenharia Civil biblioteca pode definir a inclinação do lado de uma colina. Para evitar esse problema, C ++ permite que o programador para colocar seu código em um namespace separado. Assim, o grau de dentro do Aluna namespace é diferente do grau dentro Engenharia Civil.
Video: C++ - Aula 01 - Introdução ao Curso
O namespace é acima e além do nome da classe. o grau() função de membro da classe Escavadora no Engenharia Civil namespace tem o nome estendida Engenharia Civil :: Escavadora :: grau ().
Todos os objetos de biblioteca e funções estão no namespace std. A declaração no início do modelo de programa usando STD-namespace diz que se você não vê o objeto especificado no namespace padrão, em seguida, ir olhar em std.
funções virtuais puros em C ++
Você não tem que definir uma função declarada virtual. Tal função indefinida é conhecido como um função membro virtual pura. Nesse ponto, porém, as coisas ficam complicadas. Por exemplo, uma classe com um ou mais pura funções virtuais é dito ser abstrato e não pode ser usado para criar um objeto. Abordar este assunto depois que você se sinta confortável com funções virtuais e ligação tardia.
classe string do C ++
A maioria das linguagens incluem um corda classe como um tipo intrínseca para a manipulação de sequências de caracteres facilmente. Em teoria, a classe string deve fazer o mesmo para C ++. Na prática, no entanto, não é tão simples. Porque corda não é um tipo intrínseco, as mensagens de erro que o compilador gera quando algo der errado são mais como aqueles associados com classes definidas pelo usuário. Para um iniciante, estas mensagens podem ser muito difíceis de interpretar.
Video: Escala de DO no violão para Iniciantes
corda não é sequer uma classe. É uma instância de uma classe de modelo. As mensagens de erro pode ser de tirar o fôlego.
herança múltipla em C ++
Uma classe pode realmente estender mais de uma classe base. Isso parece simples, mas pode ficar muito complicado quando as duas classes de base contêm funções membro com o mesmo nome. Pior ainda é quando ambas as classes base são eles próprios subclasses de uma classe comum.
Na verdade, muitos problemas surgem que C ++ é a única linguagem C-like que suporta herança múltipla. Java e C #, ambas as línguas derivadas do C ++, decidiu abandonar o suporte para herança múltipla.
C ++ modelos eo Standard Template Library
Os fabricantes de C ++ reparou como funções semelhantes, como são os seguintes:
int max (n1 int, int n2) {if (n1 gt; n2) {return N1} retornar N2-} max duplo (n1 dupla, dupla n2) {if (n1 gt; n2) {return N1-} retornar N2-} max char (n1 carvão, carvão animal n2) {if (n1 gt; n2) {return N1} retornar N2-}
“Não seria legal”, diz a outro, “se você poderia substituir o tipo com um tipo pseudo T que você pode definir em tempo de compilação?” Antes que você perceba, presto - modelos se tornam parte de C ++:
Video: Curso Básico de C/C++: Aula 1 - Conhecendo a linguagem
modeloT max (t1 T, T t2) {if (t1 gt; t2) {return T1-} retornar T2}
Agora, o programador pode criar um max (int, int) substituindo T com int e compilar o resultado, criar um max (duas vezes, duas vezes) substituindo T com Duplo, e assim por diante. O Comitê de Normas até lançou uma biblioteca inteira de aulas, conhecida como a Standard Template Library (STL para o short), com base em classes de modelo.
Para um iniciante, no entanto, objecto de classes de modelo começa a ficar sintaticamente muito complicado. Além disso, os erros que o compilador gera quando você começa um errado modelo instanciação está confusa para um especialista, não importa um iniciante. Este é definitivamente um tema que precisa esperar até que você se sinta confortável com a linguagem básica.