菜鸟笔记
提升您的技术认知

c 类模板的继承-ag真人游戏

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

下面程序中的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的编译器不支持让他们放在两个文件中。

总结:

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