Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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 Mini-програма, написана Inline
Наступний:Я виклав логотип, зроблений для свого форуму, і показав його всім!
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com