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

一,关键字class和typename的区别

关键字class和typename的区别

  • 关键字class和typename的区别
    • 一,相同点class和typename
    • 二,class独特点
    • 三,typename独特点

一,相同点class和typename

在c++标准模板库,也就是STL中,使用了模板,在声明类模板和函数模板时,有两种方式

其中class和typename是类模板或者函数模板中模板参数的类型。

template<class T>;
void Func();
template<typename T>;
void Func();

上述两种声明方式是没有任何区别的,也就是说,在声明类模板或者函数模板时,关键字class和typename的用法上没有任何区别。

二,class独特点

1,class可以声明或定义一个类。

2,模板模板参数

template <template <class> class Container>  // 传统写法
class MyAdapter {};

注意:C++17之后才允许:template <template <typename> typename Container>

三,typename独特点

嵌套依赖类型场景,在此场景下,必须使用typename。

template <class T>
struct MyClass
{typename T::Type x;  // 必须用typename
};

如果我们不加typename,编译器就会分不清楚T::Type 到底是类型还是静态成员,编译就会报错,所以为了让编译器明确知道T::Type是一个类型而非静态成员,就必须加上typename。

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

相关文章:

  • 线代第四章线性方程组第二节:线性方程组有解判断
  • 模型协同构建智能流程体
  • linux kernel 内存回收水位线调整方法
  • 《独立开发工具 • 半月刊》 第 003 期
  • java每日精进 5.27【分布式锁】
  • [网页五子棋][用户模块]客户端开发(登录功能和注册功能)
  • 《计算机组成原理》第 3 章 - 系统总线
  • 2025年- H54-Lc162--437. 路径总和 III(递归[回溯]OR深搜)--Java版
  • 24 数组基础与应用详解:定义(静态/VLA)、初始化、访问(有效/越界/内存调试)、遍历、大小端字节序
  • C++23:关键特性与最新进展深度解析
  • DAY9 热力图和箱线图的绘制
  • 翻转二叉树
  • 【基于STM32的新能源汽车智能循迹系统开发全解析】
  • React---day2
  • 软件同步机制-Peterson解决方案 简单讲解
  • day38 python Dataset和Dataloader
  • SSM整合:Spring+SpringMVC+MyBatis完美融合实战指南
  • 基于大模型的慢性胃炎全周期预测与诊疗方案研究报告
  • 【Quest开发】空间音频的使用
  • 异常:UnsupportedOperationException: null
  • 【运维_日常报错解决方案_docker系列】一、docker系统不起来
  • OpenCV CUDA模块图像处理------颜色空间处理之用于执行伽马校正(Gamma Correction)函数gammaCorrection()
  • OpenCV CUDA模块图像处理------颜色空间处理之GPU 上对两张带有 Alpha 通道的图像进行合成操作函数alphaComp()
  • 传统数据表设计与Prompt驱动设计的范式对比:以NBA投篮数据表为例
  • 【请关注】VC++ MFC常见异常问题及处理方法
  • 【LeetCode 热题 100】打家劫舍 / 零钱兑换 / 单词拆分 / 乘积最大子数组 / 最长有效括号
  • react基础技术栈
  • [React]实现一个类zustand公共状态库
  • Nginx 性能优化全解析:从进程到安全的深度实践
  • HJ25 数据分类处理【牛客网】