0

0

C++类模板与继承结合使用实例

P粉602998670

P粉602998670

发布时间:2025-09-11 11:32:01

|

567人浏览过

|

来源于php中文网

原创

类模板与继承结合可提升代码复用与灵活性。1. 模板基类支持通用功能,派生类定制行为,如IntContainer继承ContainerBase并扩展功能。2. 普通基类定义接口,模板派生类实现多类型支持,如DataWrapper继承Printable。3. 模板类继承模板类实现层次扩展,如EnhancedContainer继承BaseContainer,复用并增强功能。关键在于掌握实例化时机与基类成员访问方式,适用于容器、智能指针等设计场景。

c++类模板与继承结合使用实例

在C++中,类模板与继承结合使用可以实现更灵活和通用的代码设计。通过将模板与继承结合,我们可以创建可复用的基类或从模板类派生具体类,适用于多种数据类型和场景。下面通过一个实际例子来说明这种用法。

1. 模板基类 + 普通派生类

定义一个类模板作为基类,提供通用功能,然后从它派生出具体类。

template
class ContainerBase {
protected:
    T value;
public:
    ContainerBase(const T& v) : value(v) {}
    virtual void display() const {
        std::cout     }
    T getValue() const { return value; }
};

class IntContainer : public ContainerBase {
public:
    IntContainer(int v) : ContainerBase(v) {}
    void display() const override {
        std::cout     }
    void doubleValue() {
        value *= 2;
    }
};

使用示例:

int main() {
    IntContainer ic(42);
    ic.display();    // 输出: [Int] Value: 42
    ic.doubleValue();
    ic.display();    // 输出: [Int] Value: 84
    return 0;
}

2. 普通基类 + 模板派生类

有时我们需要一个固定的接口,但派生类需要支持多种类型。

立即学习C++免费学习笔记(深入)”;

阳光订餐系统
阳光订餐系统

欢迎使用阳光订餐系统,本系统使用PHP5+MYSQL开发而成,距离上一个版本1.2.8发布已经有一年了。本系统集成了留言本,财务管理,菜单管理,员工管理,安全管理,WAP手机端等功能,并继续继承1.X老版本简单、实用、美观的特点,在老版本上的基础上做了如下更新:1.更简洁的前台与后台,菜单及功能布局更合理。2.更合理的文件结构,合理适度的模板机制以及OO运用,更易于理解的代码,更适于二次开发;3.

下载
class Printable {
public:
    virtual void print() const = 0;
    virtual ~Printable() = default;
};

template
class DataWrapper : public Printable {
private:
    T data;
public:
    DataWrapper(const T& d) : data(d) {}
    void print() const override {
        std::cout     }
};

使用示例:

int main() {
    DataWrapper<:string> strWrap("Hello");
    DataWrapper numWrap(3.14);

    strWrap.print();  // 输出: Data: Hello
    numWrap.print();   // 输出: Data: 3.14
    return 0;
}

3. 模板类继承模板类

更复杂的场景中,模板类可以从另一个模板类继承。

template
class BaseContainer {
protected:
    T item;
public:
    BaseContainer(const T& i) : item(i) {}
    T getItem() const { return item; }
};

template
class EnhancedContainer : public BaseContainer {
public:
    EnhancedContainer(const T& i) : BaseContainer(i) {}

    void show() const {
        std::cout item     }
};

使用示例:

int main() {
    EnhancedContainer<:string> ec("Template Inheritance");
    ec.show();    // 输出: Enhanced item: Template Inheritance
    std::cout     return 0;
}

基本上就这些。通过将类模板与继承结合,可以构建出既通用又可扩展的类体系。关键是理解模板实例化时机和继承关系中的作用域访问(比如使用

this->
Base::
显式访问基类成员)。实际开发中常用于容器、智能指针、策略模式等设计。不复杂但容易忽略细节。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

184

2023.09.27

数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

302

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

222

2025.10.31

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

523

2023.09.20

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

538

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

52

2025.08.29

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

9

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP基础入门课程
PHP基础入门课程

共33课时 | 1.9万人学习

Go语言教程-全程干货无废话
Go语言教程-全程干货无废话

共100课时 | 9.6万人学习

前端基础进阶-移动Web
前端基础进阶-移动Web

共187课时 | 21.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号