第二章 第3节 类模板的用途-闫刚


如果一个类中的数据成员的数据类型不能确定,或者是某个成员函数的参数或返回值的类型不能确定,就必须将此类声明为模板,它的存在不是代表一个具体的、实际的类,而是代表一类类。

1. 类型模板进行不同类型 : 使用类模板进行隐藏数据类型

  • 定义类模板

//使用类模板进行隐藏数据类型
template < class T1 , class T2 >
class myClass {

public:
myClass (T1 a, T2 b): I (a), J (b){};

void show () {
    cout << "I=" << I << ", J=" << J << endl;
}
        
private:
T1 I;
T2 J;
};
  • 实例化这个类模板

myClass < int , int > class1 ( 3 , 5 );
class1. show ();
myClass < int , char > class2 ( 3 , 'a' );
class2. show ();
myClass < double , int > class3 ( 2.9 , 10 );
class3. show ();
  • 测试结果

I = 3 , J = 5
I = 3 , J = a
I = 2.9 , J = 10


2.   使用类模板进行内存的动态分配

//使用类型模块进行动态内存分配
template < int MemSize = 0 >
class Node {
public:
     Node (): _memsize (MemSize) {
        cout << "_memsize:" << _memsize << endl;
    }
~Node (){}

     void get_memsize ()
    {
         return _memsize;
    }
private:
     char buf[MemSize];
     int _memsize;
};


  • 实例化这个类模板
Node < 5 > node;
  • 输出结果:

_memsize: 5

这样就可以动态定义

猜你喜欢

转载自blog.csdn.net/yangang185/article/details/80327577