高水準言語では、関数に対してオーバーロードを用い、異なる関数でも同じパラメータ数の関数で使われます。また、異なる型や同じパラメータ数のテンプレートが必要です
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;
- }
コードをコピーします これは簡単な例です:キーワードtemplate<class 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;
- }
コードをコピーします 関数が2つの異なる型を必要とする場合の対処法は、上記のコードを読めば理解できると思います。 とはいえ、共通点はタイプが自動的にマッチングされることです。 実際、型をうまくマッチさせられなければ、つまり「牛の頭が正しくない」と誤りもあります。コンパイラの自動マッチングは暗黙型変換のルールに従ってパラメータ型を変更し、結果の精度を損なうことになります。 コードを見てみてください、試してみます。
- #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;
- }
コードをコピーします 上記の内容はそれほど難しくありませんが、探索できる場所もたくさんあります。あなたの意見はわかりません |
|