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

【C++ 语法】模板进阶

文章目录

      • 1.非类型模板参数
      • 2.模板特化
      • 3.模板全特化
      • 4.模板偏特化
      • 5.模板不能声明和定义分离

1.非类型模板参数

🍎非类型模板参数可以是 intlong longstringshortchar
🍌非类型模板参数必须在 编译期就能确定结果

// N 是非类型模板参数
template<class T, int N>
class Array {public:Array(){}private:T _arr[N];
};int main()
{Array<int, 100> a1;Array<int, 1000> a2;

2.模板特化

在这里插入图片描述

3.模板全特化

template<class T1, class T2>
class Data {public:Data() { std::cout << "d1:原模板 Data() 的特化" << std::endl;}private:T1 _d1;T2 _d2;
};//模板全特化
template<>
class Data<int, char> {public:Data() { std::cout << "d2:模板全特化" << std::endl;}private:
};

4.模板偏特化

🍎偏特化可以特化部分参数,或者对参数的进一步限制
在这里插入图片描述

5.模板不能声明和定义分离

🎈 模板的特殊性:编译时生成具体代码

⚽ 模板不是真正的代码,而是「代码生成器」。例如 template<typename T> class Data 本身不会生成任何机器码,只有当用户指定具体类型(如 Data<int>)时,编译器才会根据模板生成针对 int类型的具体代码。

若将模板声明放在.h文件,定义放在 .cpp 文件:

当其他文件 #include .h 时,只能看到声明,看不到定义
编译器在处理这些文件时,遇到 Data<int> 无法生成具体代码(缺少模板定义)
链接阶段会因找不到 Data<int> 的具体实现而报错

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

相关文章:

  • 【K8s】K8s的声明式API核心
  • 关于网站开发人员保密协议专业服务网站开发
  • supabase 实现聊天板(Chat Board)
  • PersistentVolume + NFS:网络共享存储
  • leetcode 1863 找出所有子集的异或总和再求和
  • 【C++】STL -- vector 的使用及模拟实现
  • 网站如何做图片特效erp软件实施
  • 【28】C# WinForm入门到精通 ——多文档窗体MDI【属性、方法、实例、源码】【多窗口重叠、水平平铺、垂直平铺、窗体传值】
  • 贡井区建设局网站淘宝客做自己的网站
  • 蓝牙发展史
  • 对LED点灯实验的C与汇编的深入分析,提及到volatile
  • 网站建设外包广州网站建设说说外链的建设
  • LevOJ P2080 炼金铺 II [矩阵解法]
  • wordpress网站映射wordpress免费网站国外
  • 哈尔滨企业建站系统西宁建设局官方网站
  • py_innodb_page_info.py表空间分析
  • 有什么做宝宝辅食的网站吗莱阳网站开发
  • tasklet
  • 页面 HTTPS 化实战,从证书部署到真机验证的全流程(证书链、重定向、混合内容、抓包排查)
  • 北京哪家公司做网站电脑上买wordpress
  • 家用机能否做网站服务器泰安房价走势图
  • MC33PT2000控制详解七:软件代码设计1-图形化设置
  • 在租用香港服务器之前如何判断质量
  • 【高清视频】CXL 2.0 over Fibre演示和答疑 - 将内存拉到服务器10米之外
  • 【STM32项目开源】基于STM32的独居老人监护系统
  • 海外服务器怎么测试再不同地方的访问速度?
  • Linux最忙CPU组查找函数和最忙运行队列查找函数
  • 查看未知LiDAR设备的IP地址
  • iOS 0Day漏洞CVE-2025-24085相关PoC利用细节已公开
  • 网站文案框架网络推广策划书