|
|
Публикувано в 4.10.2014 г. 20:45:19 ч.
|
|
|

В езиците на високо ниво използваме претоварване за функции, което се прилага при функции с различни функции, но със същия брой параметри, и шаблони са необходими за различни типове и същия брой параметри
C++ аплет
- #include<iostream>
- using namespace std;
- template <class T>
- T max(T a,T b)
- {
- return a>b?a:b;
- }
- int main()
- {
- int a,b;cin>>a>>b;
- cout<<max(a,b);
- return 0;
- }
Копирай код Това е прост пример: шаблонът за ключови думи<клас T> е началото на структурата на шаблона, така че не се налага да пишем няколко C++ кода с една и съща функция многократно, когато търсим максималната стойност Обърнете внимание, че при извикване на функция нейният тип автоматично се съвпада. Не е нужно да се показва. Горното е най-основната употреба, но ще се сблъскаме със следните ситуации
- #include<iostream>
- using namespace std;
- template <class T,class E>
- E max(T a,E b)
- {
- return a>b?a:b;
- }
- int main()
- {
- int a;float b;cin>>a>>b;
- cout<<max(a,b);
- return 0;
- }
Копирай код Какво да правим, когато функцията ни изисква два различни типа, мисля, че ще разберете след като прочетете горния код. Но това, което ги общо, е, че типовете се съвпадат автоматично. Всъщност имаме и грешки, ако не можем да съвпаднем добре с типа, тоест "главата на бика не е правилна", тогава автоматичното съвпадение на компилатора ще промени типа параметър според правилата за имплицитно преобразуване на типове, което в крайна сметка води до загуба на точност на резултата. Погледни кода, можеш да опиташ.
- #include<iostream>
- using namespace std;
- template <class T,class E>
- E max(T a,E b)
- {
- return a>b?a:b;
- }
- int main()
- {
- int a;float b;cin>>a>>b;
- cout<<max(a,b);
- return 0;
- }
Копирай код Горното съдържание не е много трудно, но има и много места, които могат да бъдат изследвани, не знам какво мислите |
|
Предишен:c Мини програма, написана от InlineСледващ:Публикувах лого, направено за моя форум, и го показах на всички!
|