模板类派生模板类


  1. #include <iostream>
  2. using namespace std;
  3. template< typename T>
  4. class A
  5. {
  6. public:
  7. A(T a)
  8. {
  9. this->a = a;
  10. }
  11. void printA()
  12. {
  13. cout<< "a:"<<a<< endl;
  14. }
  15. protected:
  16. private:
  17. T a;
  18. };
  19. //模板派生是需要具体化模板类 c++编译器需要知道 父类的数据类型具体是什么样的(派生类首先调用父类的构造函数)
  20. //=====》要知道父类所占内存大小是多少,只有数据类型固定下来,才知道如何分配内存
  21. class B: public A< int>
  22. {
  23. public:
  24. B():A( 1)
  25. {
  26. this->a = 10;
  27. }
  28. void printA()
  29. {
  30. cout<< "a:"<<a<< endl;
  31. }
  32. protected:
  33. private:
  34. int a;
  35. };
  36. //类模板派生类模板
  37. template< typename T>
  38. class B2: public A <T>
  39. {
  40. public:
  41. B2(T c, T d):A <T> (c)
  42. {
  43. this->c = c;
  44. this->d = d;
  45. }
  46. void printC()
  47. {
  48. cout<< "c:"<<c<< endl;
  49. }
  50. protected:
  51. private:
  52. T c;
  53. T d;
  54. };
  55. //类模板做函数参数
  56. void UseA(A<float> &a)
  57. {
  58. a.printA();
  59. }
  60. int main()
  61. {
  62. B2< int> b( 1, 2);
  63. b.printC();
  64. system( "pause");
  65. return 0;
  66. }

猜你喜欢

转载自blog.csdn.net/windgs_yf/article/details/80937688