函数模板

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. /**
  4. * 函数模板
  5. * */
  6. template<class T>
  7. void my_swap(T &a, T &b) {
  8. T temp;
  9. temp = a;
  10. a = b;
  11. b = temp;
  12. }
  13. int main() {
  14. int a = 1, b = 2;
  15. my_swap(a, b);
  16. printf("a=%d b=%d\n", a, b);
  17. double c = 1.535, d = 2.55;
  18. my_swap(c, d);
  19. printf("c=%.2f d=%.2f\n", c, d);
  20. return 0;
  21. }

类模板

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. /**
  4. * 类模板
  5. * */
  6. template<class T>
  7. class Trray {
  8. public:
  9. Trray(int siz = 1) {
  10. this->siz = siz;
  11. aptr = new T[siz];
  12. }
  13. void fill_array();
  14. void dis_array();
  15. ~Trray() {
  16. delete []aptr;
  17. }
  18. private:
  19. int siz;
  20. T *aptr;
  21. };
  22. template<class T>
  23. void Trray<T>::fill_array() {
  24. printf("please input %d data\n", siz);
  25. for(int i = 0; i < siz; i++) {
  26. printf("the %d data", i+1);
  27. cin>>aptr[i];
  28. }
  29. }
  30. template<class T>
  31. void Trray<T>::dis_array() {
  32. for(int i = 0; i < siz; i++) {
  33. cout<<aptr[i]<<" ";
  34. }
  35. cout<<endl;
  36. }
  37. int main() {
  38. Trray<char> ac(3);
  39. ac.fill_array();
  40. ac.dis_array();
  41. Trray<float>af(3);
  42. af.fill_array();
  43. af.dis_array();
  44. return 0;
  45. }

类模板派生

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. /**
  4. * 类模板派生
  5. * */
  6. template<class T>
  7. class A {
  8. public:
  9. void showA(T a) {
  10. cout<<a<<endl;
  11. }
  12. };
  13. template<class X, class Y>
  14. class B: public A<Y> {
  15. public:
  16. void showB(X b) {
  17. cout<<b<<endl;
  18. }
  19. };
  20. int main() {
  21. B<char, int> b;
  22. b.showA(10);
  23. b.showB('c');
  24. return 0;
  25. }