この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 13940|答える: 0

[C++] C++のテンプレートについて考える

[リンクをコピー]
掲載地 2014/10/04 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. }
コードをコピーします

これは簡単な例です:キーワードtemplate<class 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. }
コードをコピーします

関数が2つの異なる型を必要とする場合の対処法は、上記のコードを読めば理解できると思います。 とはいえ、共通点はタイプが自動的にマッチングされることです。
実際、型をうまくマッチさせられなければ、つまり「牛の頭が正しくない」と誤りもあります。コンパイラの自動マッチングは暗黙型変換のルールに従ってパラメータ型を変更し、結果の精度を損なうことになります。
コードを見てみてください、試してみます。
  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