8 C ++ Características Not-So-Iniciante

A linguagem C ++ contém tantos recursos que programadores iniciantes não podem compreender cada um. Felizmente, você não precisa dominar todos os recursos da linguagem para escrever grandes programas, no mundo real. Seguem-se dez características que você pode querer olhar para o futuro, apenas no caso de você vê-los em programas de outras pessoas.

O comando Goto C ++

Este comando vai todo o caminho de volta para C, o progenitor de C ++. Em princípio, o uso desse comando é fácil. Você pode colocar Goto label- onde você quiser. Quando C ++ vem através deste comando, o controle passa imediatamente para o rótulo, como demonstrado neste trecho de código:

 para (-) {if (expressão condicional) {Goto outahere -} // ... o que quiser ...} outahere: // ... programa continua aqui ...

Na prática, no entanto, 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 normas introduzidas pausa e continuar e quase totalmente removido a necessidade de a vamos para comando.

operador ternário do C ++

o operador ternário é um operador único para C e C ++. Ele funciona como se segue:

int n = (condicional)? expression1: expression2-

o ? operador de primeira avalia a condicional. Se a condição é verdadeira, então o valor da expressão é igual ao valor de expression1- caso contrário, é igual ao valor de expression2.

Por exemplo, você poderia implementar um máximo() função como se segue:

int max (N1, int N2) {return (n1> 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.

tipos enumerados em C ++

A simples idéia é que você pode definir constantes e deixe C ++ atribuir-lhes valores, como mostrado aqui:

enum Colors {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 ++ # # 147-fixados 148- este problema criando um tipo de classe enumerada como mostrado no seguinte trecho:

classe enum Colors {PRETO, azul, verde, amarelo, vermelho} -Cores Mycolor = Cores :: BLACK-

Nesta versão, cores é um novo tipo. Cada uma das constantes, PRETO, AZUL, e assim por diante, são membros de tipo cores. Você ainda pode lançar um objeto da classe cores numa 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 espaço de nomes é diferente do grau dentro Engenharia Civil.

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 instruçã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 de definir uma função declarada virtual. Tal função indefinida é conhecido como um função de membro virtual pura. Nesse ponto, porém, as coisas ficam complicadas. Por exemplo, uma classe com um ou mais puras funções virtuais é dito ser sumário e não pode ser usada para criar um objecto. 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ínseco para a manipulação de cadeias 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 pode ser muito difícil de interpretar.

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 de membro com o mesmo nome. Pior ainda é quando ambas as classes base são eles próprios subclasses de alguma 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 o seguinte são:

int max (n1 int, int n2) {if (n1> n2) {return N1-} retornar N2-} max dupla (n1 dupla, dupla n2) {if (n1> n2) {return N1-} retornar N2-} max char (n1 de char, char n2) {if (n1> n2) {return N1-} retornar N2-}

# 147 Wouldn't que ser legal, # 148- um diz para o outro, # 147 se você poderia substituir o tipo com um tipo pseudo T que você pode definir em tempo de compilação # 148- Antes que você perceba, presto - modelos se tornam parte de C ++?:

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

Agora, o programador pode criar um max (int, int) substituindo T com int e compilar o resultado, criar uma max (double, double) substituindo T com duplo, e assim por diante. O Comitê de Padrões até lançou uma biblioteca inteira de aulas, conhecida como a Standard Template Library (STL para o short), com base nas classes de modelo.

Para um iniciante, no entanto, o objecto de classes de modelo começa a ficar sintacticamente 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.

menu