Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 13940|Resposta: 0

[C++] Pensando em modelos em C++

[Copiar link]
Publicado em 04/10/2014 20:45:19 | | |
Em linguagens de alto nível, usamos sobrecarga para funções, que é usada em funções com funções diferentes, mas com o mesmo número de parâmetros, e modelos são necessários para tipos diferentes e o mesmo número de parâmetros
applet C++

  1. #include<iostream>
  2. using namespace std;

  3. template <class T>
  4. T max(T a,T b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a,b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Copiar código

Este é um exemplo simples: a palavra-chave template<class T> é o início de uma estrutura de template, para que não precisemos escrever vários códigos C++ com a mesma função repetidamente ao buscar o valor máximo
Note que, ao chamar uma função, seu tipo é automaticamente correspondido. Não precisa ser mostrado.
O que foi dito acima é o uso mais básico, mas encontraremos as seguintes situações

  1. #include<iostream>
  2. using namespace std;

  3. template <class T,class E>
  4. E max(T a,E b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a;float b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Copiar código

O que fazer quando nossa função precisa de dois tipos diferentes, acho que você pode entender depois de ler o código acima. Mas, de qualquer forma, o que eles têm em comum é que os tipos são automaticamente combinados.
Na verdade, também temos erros: se não conseguirmos corresponder bem o tipo, ou seja, "a cabeça de touro não está certa", então o emparelhamento automático do compilador alterará o tipo de parâmetro de acordo com as regras de conversão implícita de tipos, o que eventualmente levará à perda de precisão do resultado.
Olhe o código, você pode tentar.
  1. #include<iostream>
  2. using namespace std;

  3. template <class T,class E>
  4. E max(T a,E b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a;float b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Copiar código
O conteúdo acima não é muito difícil, mas também há muitos lugares que podem ser explorados, não sei quais são suas opiniões





Anterior:c Programa Mini escrito pela Inline
Próximo:Postei um logo feito para o meu fórum e mostrei para todo mundo!
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com