O modelo Biblioteca C ++

A biblioteca padrão C ++ fornece um conjunto completo de matemática, tempo, de 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.

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:

máxima int (int n1, int n2) - // retorno máximo de dois máxima integersunsigned (u1 não assinado, não assinado u2) máxima -duplo (double d1, double d2) máxima -char (c1 char, carvão c2) -

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

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

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

Essa abordagem funciona. Agora, C ++ selecionará a melhor opção, máxima (int, int), para uma referência, tais 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 deixá-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.

menu