当前位置: 首页 > web >正文

C++ 类模板

类模板定义

tempalte  < class   Type>

    关键字tempalte是告诉编译器,将要定义一个模板。关键字class可以看作是变量的类型名,该变量接受类型作为其值,把Type看作变量名称。 当模板被调用时,Type将被 具体的类型值(如 int 或 string)取代。 在较新的C+±中允许使用typename代替class,格式如下所示:

template < typename  Type>

    模板成员函数替换原有类的类方法,每个函数头都将添加相同的模板声明前缀:

tempalte <class Type>

    类模板的限定符由类名:: 改为类名:: 。如果在类声明中定义了方法(内联定义),则可以省略模板前缀和类限定符。
需要特别注意模板不是函数,不能单独编译,模板成员函数的定义必须和类模板的定义放在一个头文件中,不能将模板成员函数的实现放在一个独立的实现文件中。

下面以Stack类模板为例进行说明:

// stackp.h --   a stack template
#ifndef STACKP_H_
#define STACKP_H_// template <class Type> 表明接下来声明Stack类模板。可以替换为tempalte <typename  Type>
template <class Type>
class Stack
{
private:enum {MAX = 10};// 此处的Type为类模板实例的类型,具体为什么类型由实例时确定。如果实例时指定Type为int,则下面表示int items[MAX]Type items[MAX];int top;
public:// 内联方式定义类模板成员函数模板。不需要前缀:tempalte <typename  Type> 和 类限定符:Stack<Type>::Stack(){top = 0;}bool isempty();...
};// 非内联方式(类外部定义成员函数)定义成员函数模板
template <class Type>		// 模板前缀
bool Stack<Type>::isempty()// 类限定符是Stack<Type>::, 而非Stack::
{return top == 0;
}
...
#endif

使用模板类

    要使用模板类,除了包含模板类的头文件,还需要对类模板进行实例化。以上诉的Stack模板类为例创建的两个栈。编译器按照Stack模板生成两个独立的类声明和两组独立的类方法。

Stack<int> kernels;	//存储int的栈
Stack<string> colonels;	// 存储string的栈
http://www.xdnf.cn/news/17520.html

相关文章:

  • Android MVP架构详解:从理论到实践
  • [优选算法专题一双指针——四数之和]
  • 大语言模型概述
  • 【后端】Java Stream API 介绍
  • Java -- 日期类-第一代-第二代-第三代日期
  • Datawhale AI夏令营第三期,多模态RAG方向 Task2
  • QT环境搭建
  • 下肢康复机器人机械结构设计cad【6张】三维图+设计说明说书
  • 【数据结构入门】栈和队列
  • 用天气预测理解分类算法-从出门看天气到逻辑回归
  • LeetCode111~130题解
  • Nginx 性能优化与动态内容处理
  • linux 操作ppt
  • 排序概念以及插入排序
  • C++-红黑树
  • 嵌入式 Linux Mender OTA 实战全指南
  • 上海AI Lab、浙大EagleLab等提出RRVF:利用「验证非对称性」,只输入图片学习视觉推理
  • 【LLM】Openai之gpt-oss模型和GPT5模型
  • NestJS Config 入门教程
  • 自动生成视频的AI大模型高效创作指南
  • Java Stream API 实战:提升集合处理的效率与可读性!
  • 微雪电子发布工业级ESP32-S3-POE工控板:8路隔离IO,双核240MHz赋能AIoT,一根网线解决供电与通信,工业物联网迎来高性价比控制新选择
  • 关键点检测(10)——yolov8-pose 复现coco-pose
  • 【QT】QMainWindow:打造专业级桌面应用的基石
  • Python基础教程(七)匹配模式:隐藏在结构之美中的编程革命
  • 实用Shell高级视频课程
  • 【CVPR2025】计算机视觉|PX:让模型训练“事半功倍”!
  • Uipath Studio中邮件自动化
  • 微信小程序中实现表单自动填充功能的方法
  • ABP VNext + Apache Kafka Exactly-Once 语义:金融级消息一致性实战