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

【C++】掌握类模板:多参数实战技巧

1. 类模板

1.1 类模板的定义格式

template<class T1, class T2, ..., class Tn> 
class 类模板名 
{  
// 类内成员定义 
};

多参数类模板的示例化与使用规则:

  1. 实例化格式:类模板名<类型1, 类型2, ..., 类型n> 变量名(构造参数);

  2. 使用要点:

    1. 必须为每个模板参数显式指定具体类型(除非有默认参数)

    2. 模板参数之间用逗号分隔,整体用尖括号<>包裹

    3. 类内部可以使用这些模板参数定义成员变量、函数参数或返回值类型

示例:

template<class KeyType, class ValueType>  // 两个模板参数:键类型和值类型
class MyPair { ... }

这里KeyTypeValueType是类型占位符,使用时需替换为具体类型。

实例化方式:

  1.   MyPair<int, std::string>:指定键为int类型,值为string类型

  1.   MyPair<std::string, double>:指定键为string类型,值为double类型

  1.   每个实例化都会生成一个独立的类(如MyPair<int, string>MyPair<string, double>是两个不同的类)

// 动态顺序表 
// 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具 
template<class T> 
class Vector 
{  
public :  Vector(size_t capacity = 10) : _pData(new T[capacity]) , _size(0) , _capacity(capacity) {}    // 使用析构函数演示:在类中声明,在类外定义。  ~Vector();   void PushBack(const T& data);  void PopBack();  // ...    size_t Size() {return _size;}   T& operator[](size_t pos{  assert(pos < _size);  return _pData[pos]; } private:  T* _pData;  size_t _size; size_t _capacity; 
}; 
// 注意:类模板中函数放在类外进行定义时,需要加模板参数列表 
template <class T> 
Vector<T>::~Vector() 
{  if(_pData)  delete[] _pData;  _size = _capacity = 0; 
}

1.2 类模板的实例化

类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<>

中即可,类模板名字不是真正的类,而实例化的结果才是真正的类

// Vector类名,Vector<int>才是类型 
Vector<int> s1; 
Vector<double> s2;

http://www.dtcms.com/a/356960.html

相关文章:

  • 构筑沉浸式3D世界:渲染、资源与体验的协同之道
  • 云计算学习笔记——逻辑卷管理、进程管理、用户提权RAID篇
  • N32G43x Flash 驱动移植与封装实践
  • DBeaver 的 PostgreSQL 驱动包默认存储位置
  • 序列化和反序列的学习
  • 移动社交时代电商流量获取新路径:基于社群与开源AI智能名片链动2+1模式S2B2C商城小程序的探索
  • 【基础-单选】关于Button组件,下面哪个样式是胶囊型按钮
  • 大模型之RAG, 检索增强生成
  • 【若依】RuoYi-Vue-springboot3分离版
  • RS485、RS232、RS422协议
  • 浔川代码编辑器v2.1.0公测版上线时间公告
  • 基于FPGA的DDR3读写实验学习
  • LeetCode算法日记 - Day 26: 归并排序、交易逆序对的总数
  • 河南葱香鸡蛋,嫩滑香浓超棒!
  • 企业微信如何设置长期有效的获客二维码?3步生成!
  • 机器人视觉检测
  • 决胜财报季,证券投研如何实现财报自动化分析录入?
  • 企微智能表格对接业务系统
  • 指纹手机技术:破解亚马逊多账号运营痛点的底层逻辑与实践
  • useEffect中直接使用 await报错
  • 直流电机驱动与TB6612
  • Shell 中 ()、(())、[]、{} 的用法详解
  • X-anylabeling3.2标注工具的安装与使用
  • Python五天极限复习
  • 突破传统企业组网瓶颈:某科技公司智能组网服务项目深度解析
  • STL容器的连续性及其访问:vector和deque
  • 刷题日记0829
  • 机器学习算法全景解析:从理论到实践
  • idea控制台从properties中取值然后打印出现控制台乱码问题
  • 2025年热门职业资格证书分析