模板类与继承

1)模板类继承普通类(常见)。

2)普通类继承模板类的实例化版本。

3)普通类继承模板类。(常见)

4)模板类继承模板类。

5)模板类继承模板参数给出的基类(不能是模板类)。

示例:

1)模板类继承普通类

#include <iostream>
#include <string>

// 普通的基类
class Base {
public:
    void show() {
        std::cout << "Base class show function called." << std::endl;
    }
};

// 模板类继承自普通类 Base
template <typename T>
class Derived : public Base {
private:
    T data;  // 模板类型的数据

public:
    // 构造函数
    Derived(T d) : data(d) {}

    // 显示模板类型数据
    void display() {
        std::cout << "Data: " << data << std::endl;
        show();  // 调用基类的函数
    }
};

int main() {
    Derived<int> obj1(123);
    obj1.display();  // 显示 int 类型的数据

    Derived<std::string> obj2("Hello");
    obj2.display();  // 显示 string 类型的数据

    return 0;
}

代码解释:

  • Base 类:这是一个普通的基类,其中包含一个 show 方法,用于输出一些基本信息。
  • Derived 类:这是一个模板类,继承自 Base 类。它包含一个模板类型的成员 dataDerived 类的构造函数接受一个类型为 T 的参数,并将其存储在 data 成员变量中。
  • Derived<T>::display() 方法:这个方法显示存储在 data 中的数据,并调用继承自 Base 类的 show 方法。

这个示例展示了如何通过继承普通类来复用和扩展已有的功能。模板类通过继承可以适应更多类型的数据,同时保留基类的行为,这是模板编程中一个非常强大的特性。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值