当前位置: 首页 > 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。

相关文章:

  • 线代第四章线性方程组第二节:线性方程组有解判断
  • 模型协同构建智能流程体
  • 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
  • 做鞋子有什么好网站/免费营销软件网站
  • 做网站编辑工作好不好/seo搜索引擎推广
  • 男男做爰视频网站/武汉全网营销推广公司
  • 网站域名备案注销/资阳地seo
  • 福州网站建设信息/app渠道推广
  • 企业官网型网站建设/本地推广平台