Suponha que você quer construir uma classe C + + para representar números complexos desde C + + não inclui um tipo de dados para eles. A classe " Complex" deve lidar com números do tipo int, float e double . Você pode repetir o mesmo código três vezes , ou você pode escrever uma vez e usar os modelos que suportam tipos de dados genéricos. No final , sua classe será semelhante a uma das classes de contêineres STL . Instruções
1
Familiarize-se com a sintaxe modelo se você ainda não estiver . Para declarar uma classe de modelo , insira a seguinte linha de código imediatamente acima da declaração de classe, como mostrado:
modelo
classe Complex {
//etc ..
2
nota que " modelo " e " classe " são palavras-chave . "T" é o nome que você dá para o tipo de dados genérico. T pode assumir a forma de um int, float ou double . Você deve sempre colocar " classe " e " T" em colchetes . Você também pode usar a palavra-chave " nome_do_tipo " no lugar de "classe". Embora essas palavras-chave têm um significado um pouco diferente em C + +, para os fins deste tutorial, eles são equivalentes .
3
Use "T" na declaração de corpo da classe onde você quer que o processamento genérico . Dos dados "real " e " imag " são do tipo T , porque eles podem ter a identidade de qualquer tipo de número. A função de membro real () é um protótipo com T , pois pode retornar números do tipo int , float ou double :
modelo
classe Complex {
verdadeiro T, imag ;
público :
Complex ( const T r, T i const ) : real ( (T) 0), ( (T) 0) {} T real ( ) const;
//etc ..
4
Repita a definição de modelo para cada função membro definida fora do corpo da classe . Além disso, coloque o parâmetro T dentro de colchetes e inseri-lo entre o nome da classe eo operador de escopo , como segue:
modelo
T Complexo < T> :: Real ( ) const { return
real;
}
5
Demonstrar um objeto complexo que usa int e um que usa float:
int main () {
Complexo ni (4 , -5 ) //forma 4 - j5
nf Complex ( 4.f , - 5.f ) //formulário 4.0 - j5.0
cout cout }
6
Aprenda a usar classes container como vetor < T> e algoritmos como cópia (). Estude o STL . Uma vez que a Standard Template Library é uma biblioteca genérica construída de modelos , é um excelente lugar para aprender a construir classes genéricas usando modelos.