c++(类模板的继承)

根据上一篇博客中举的数组的例子,这篇博客就对其进行继承,再继承一个模板类出来。

下面程序中的searcharray模板就继承了之前的freearray模板类,然后在他的基础上实现对特定数组元素的查找操作:

//此模板继承自freearray
template 
class SearchArray:public FreeArray
{
public:
    //构造函数
    SearchArray(int s):FreeArray(s){}
    //拷贝构造函数
    SearchArray(const SearchArray &);
    //查找特定元素
    int findItem(T);
};

template 
SearchArray::SearchArray(const SearchArray &obj)
{
    for(int n=0;nsizeArray();n++)
        this->operator[](n) = obj[n];
}

template 
int SearchArray::findItem(T item)
{
    for(int n=0;n<=this->sizeArray();n++)
    {
        if(this->operator[](n) == item)
            return n;
    }
    return -1;
}

主函数测试:

     //模板类的继承测试
    SearchArray arrInt(10);

    int x;
    for(x=0;x<10;x++)
        arrInt[x] = x+3;
    cout<<"the value of int array is:";
    for(x=0;x<10;x++)
        cout<

运行结果:

注意,从模板类A中继承得到模板类B的时候,这两个模板的定义最好都放在同一个头文件下

根据测试,我使用的codeblocks和GCC的编译器不支持让他们放在两个文件中。

总结:

  • 一个类模板不仅可以从另一个类模板中导出,也可以从一个普通类导出,当然普通类也可以继承一个模板类
  • 也就是说,普通类和模板类可以构成四种继承关系。

你可能感兴趣的:(C++)