Vídeo: BUSCAM - Biblioteca UCAM 2024
A biblioteca C ++ padrão fornece um conjunto completo de matemática, tempo, entrada / saída e operações do DOS, para citar apenas alguns. Muitos dos primeiros programas que você aprende como iniciantes usam as chamadas funções de seqüência de caracteres definidas nas seqüências de arquivos de inclusão .
Os tipos de argumento para muitas dessas funções são corrigidos. Por exemplo, ambos os argumentos para strcpy (char *, char *) devem ser um ponteiro para uma string de caracteres com terminação nula - nada mais faz sentido.
Existem funções que são aplicáveis a vários tipos. Considere o exemplo da função lowly maximum (), que retorna o máximo de dois argumentos. Todas as variações a seguir fazem sentido:
int máximo (int n1, int n2); // retorna máximo de dois inteiros sem assinatura máxima (não assinado u1, não assinado u2); duplo máximo (duplo d1, duplo d2); char maximum (char c1, char c2);
Aqui, você gostaria de implementar o máximo () para todos os quatro casos.
Claro, você pode sobrecarregar o máximo () com todas as versões possíveis:
máximo duplo (duplo d1, duplo d2) {return (d1> d2)? d1: d2;} int máximo (int n1, int n2) {return (n1> n2)? n1: n2;} char maximum (char c1, char c2) {return (c1> c2)? c1: c2;} // … repete para todos os outros tipos numéricos …
Esta abordagem funciona. Agora C ++ seleciona a melhor combinação, máximo (int, int) , para uma referência, como máximo (1, 2) . No entanto, criar a mesma função para cada tipo de variável é um desperdício de tempo.
O código-fonte para todas as funções máximas (T, T) segue o mesmo padrão, onde T é um dos tipos numéricos. Seria tão conveniente se você pudesse escrever a função uma vez e deixar C ++ fornecer o tipo T conforme necessário quando a função for usada. Na verdade, o C ++ permite que você faça exatamente isso. Eles são chamados definições de modelo .