Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 13940|Ответ: 0

[C++] Размышления о шаблонах на C++

[Скопировать ссылку]
Опубликовано 04.10.2014 20:45:19 | | |
В языках высокого уровня мы используем перегрузку для функций, которая применяется в функциях с разными функциями, но с одинаковым количеством параметров, и для разных типов и одинакового количества параметров нужны шаблоны
Апплет 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. }
Копирование кода

Это простой пример: шаблон ключевых слов<класс T> является началом структуры шаблона, поэтому нам не нужно многократно писать несколько кода на C++ с одной и той же функцией при поиске максимального значения
Обратите внимание, что при вызове функции её тип автоматически совпадает. Это не обязательно показывать.
Вышеописанное — самое базовое применение, но мы столкнёмся с следующими ситуациями

  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. }
Копирование кода

Что делать, когда нашей функции нужны два разных типа, думаю, вы сможете понять это после прочтения приведённого выше кода. Но в любом случае, их объединяет то, что типы автоматически совпадают.
На самом деле бывают и ошибки: если мы не можем хорошо сопоставить тип, то есть «голова быка неправильная», то автоматическое сопоставление компилятором изменит тип параметра согласно правилам неявного преобразования типа, что в конечном итоге приведёт к потере точности результата.
Посмотри на код, можешь попробовать.
  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. }
Копирование кода
Вышеописанный материал не очень сложный, но есть много мест, которые можно исследовать, я не знаю вашего мнения





Предыдущий:c Мини-программа, написанная Inline
Следующий:Я выложил логотип, сделанный для своего форума, и показал его всем!
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com