C ++のテンプレートのような

クラステンプレート:

フォーマット:

1.文
テンプレート<型名T>
クラスAAA {
/ *使用Tのような、特定のタイプを示す:* /
プライベート:
TはOBJ;
公共:
ボイドTEST_FUNC(T&T);
...
};

定義2.
テンプレート<typenameに

T>
ボイドAAA <T> :: TEST_FUNC(T&T){...}

使用します。

1.使用インスタンス:
AAA <整数> A;
AAA <ダブル> B。

事前の2例:

テンプレートAAA <整数>;
リユース:
AAA <整数> A;

カスタム(同様の過負荷):

1.声明
テンプレート<>
クラスAAA <整数> {
...
公共:
ボイド試験(ボイド)。
}。

2.定義
空隙AAAを<整数> ::テスト(ボイド){...}

1の#include <iostreamの>
 2の#include < ストリング・H>
 3の#include <unistd.h>
 4  
5  使用 名前空間STDを、
6  
7テンプレート<型名T>
 8  クラスAAA {
 9  プライベート10      のT T;
11  公衆12      ボイド TEST_FUNC(CONST T&T)。
13      ボイドプリント(ボイド)。
14  
15  
16  }。
17  
18テンプレート<型名T>
 19 無効(AAA <T> :: TEST_FUNC のconst T&T)
 20は 、{
 21は     、この - > T = ; T
 22である }
 23は、 
24テンプレート、<型名T>
 25  空隙 AAA <T> ::プリント(ボイド// Tこと注
26であります {
 27      COUT << T << ENDL;
 28  }
 29  
30  INTメイン(int型 ARGC、チャー ** atgv)
 31である {
 32      AAA < INT > A; // インスタンス使用した場合
33     a.test_func(1 )。
34      a.print()。
35 }
コードの表示

結果:

1

1の#include <iostreamの>
 2の#include < ストリング・H>
 3の#include <unistd.h>
 4  
5  使用 名前空間STDを、
6  
7テンプレート<型名T>
 8  クラスAAA {
 9  プライベート10      のT T;
11  公衆12      ボイド TEST_FUNC(CONST T&T)。
13      ボイドプリント(ボイド)。
14  
15  
16  }。
17  
18テンプレート<型名T>
 19 ボイド AAA <T> :: TEST_FUNC(CONST T&T)
 20  {
 21       - > T = T。
22  }
 23  
24テンプレート<型名T>
 25  空隙 AAA <T> ::プリント(ボイド// 注意T 
26  {
 27      COUT << T << ENDL。
28  }
 29  
30テンプレート<>
 31  クラス AAA < INT > {
 32  公共33      ボイド test_func_int(CONST  INTT)
 34      {
 35          COUT << T << ENDL。
36      }
 37      空隙 print_int(ボイド)。
38  
39  }。
40  
41  空隙 AAA < INT > :: print_int(ボイド42  {
 43      COUT << " 試験用" << ENDL。
44  }
 45  
46  INTメイン(int型 ARGC、チャー ** atgv)
 47  {
 48      AAA < ダブル> A; // 使用してインスタンス化アプリケーション
49      a.test_funcを(1 );
 50      a.print();
 51は 
52である      AAA < INT > B; // 関数を実装するカスタム、先端が角括弧のカスタマイズを使用する必要がある場合型ブラケット
53は、 
54である      b.test_func_int(1 );
 55      b.print_int();
 56れます }
コードの表示

結果:

1

1

テストのために

おすすめ

転載: www.cnblogs.com/yekongdebeijixing/p/12173843.html