A biblioteca c ++ modelo

Video: Tutorial de C++ en Español # 43 - Crear una Biblioteca

A biblioteca padrão C ++ fornece um conjunto completo de matemática, tempo, entrada / saída, e as operações do DOS, para citar apenas alguns. Muitos dos primeiros programas que você aprende como um novato usar as chamadas funções seqüência de caracteres definida no arquivo de inclusão cordas.

Video: C++ - Funciones de libreria

Os tipos de argumento para muitas dessas funções são fixas. Por exemplo, ambos os argumentos para strcpy (char *, char *) deve ser um ponteiro para uma cadeia de caracteres terminada em nulo - nada mais faz sentido.

Há funções que são aplicáveis ​​a vários tipos. Considere o exemplo dos humildes máximo() função, que retorna o máximo de dois argumentos. Todas as seguintes variações fazer sentido:

Video: Visual Studio C++ usando biblioteca string.h

máximo int (int n1, n2 int) - // retorno máximo de dois máxima integersunsigned (u1 sem sinal, sem sinal u2) máximo -duplo (duplo d1, d2 dupla) máximo -char (c1 carvão, carvão animal C2) -


Aqui, você gostaria de implementar máximo() para todos os quatro casos.

Claro, você pode sobrecarregar máximo() com todas as versões possíveis:

máxima de casal (duplo d1, double d2) {return (d1 gt; d2)? d1: D2-} máxima int (int n1, int n2) {return (n1 gt; n2)? n1: N2-} máximo char (c1 carvão, carvão animal c2) {return (c1 gt; c2)? c1: c2 -} // ... repetir para todos os outros tipos numéricos ...

Essa abordagem funciona. Agora C ++ seleciona o melhor jogo, máxima (int, int), para uma referência, tal como máxima (1, 2). No entanto, criar a mesma função para cada tipo de variável é uma perda bruta de tempo.

O código fonte para todos os máxima (T, t) funções segue o mesmo padrão, onde T é um dos tipos numéricos. Seria muito conveniente se você pudesse escrever a função uma vez e deixar C ++ fornecer o tipo T conforme necessário, quando a função é usada. Na verdade, C ++ permite que você faça exatamente isso. Eles são chamados definições de modelo.


Publicações relacionadas