class与typename的异同

news/2025/3/15 0:58:48/

一、class与typename的相同点

typename关键字常用于函数模板,这里首先引入函数模板的概念:函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定 类型版本

//函数模板格式
template<typename T1,typename T2,....,typename Tn>
返回值类型 函数名(参数列表){}

 注意:typename是用来定义模板参数关键字,也可以使用class

//一段用于交换的函数模板
template<typename T>
void Swap( T& left, T& right)
{T temp = left;left = right;right = temp;
}

注意:在模板定义语法中关键字 class 与 typename 的作用完全一样

二、class与typename的不同点

以下面这段代码为例:实现一个vector容器的迭代器begin()功能,并函数模板的定义和实现分离

T是一个类模板的参数 是一个类型

C++语法规定 如果被视为是类型名的话 是需要用typename去声明定义的 

typename暗示着这个参数不必要是一个 class type(类类型)

如果在声明位置模板用了class 下面只要用template还是会把T强制当做类型名 

声明使用用class T的话 实现要么就不写关键字 要么就得显示typename 不能显示用class

template<class T>//报错
vector<class T>::iterator vector<class T>::begin()
{return _start;
}template<typename T>//允许
vector<T>::iterator vector<class T>::begin()
{return _start;
}template<class T>//允许
vector<typename T>::iterator vector<class T>::begin()
{return _start;
}template<typename T>//允许
vector<typename T>::iterator vector<class T>::begin()
{return _start;
}


http://www.ppmy.cn/news/48085.html

相关文章

idea 配置docker 进行上传镜像,部署启动容器

前言 在我们开发测试过程中&#xff0c;需要频繁的更新docker镜像&#xff0c;然而默认情况下&#xff0c;docker的2375端口是关闭的&#xff0c;下面介绍如何打开端口。 修改docker配置文件 操作步骤&#xff1a; 1.1、修改配置 登录docker所在服务器&#xff0c;修改docker…

深入浅出剖析JAVA多线程原理

1. 线程基础知识 1.1 线程与进程 1.1.1 进程 ●程序由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载至 CPU&#xff0c;数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理…

聚观早报|马斯克将TruthGPT挑战ChatGPT;腾讯披露自研芯片新进展

今日要闻&#xff1a;马斯克将TruthGPT挑战ChatGPT&#xff1b;苹果在印度年销售额近60亿美元&#xff1b;腾讯披露自研芯片沧海最新进展&#xff1b;特斯拉中国工厂普通工人月薪约1万元&#xff1b;飞猪将直接向阿里CEO张勇汇报 马斯克将TruthGPT挑战ChatGPT 4 月 18 日消息&…

【大厂直通车】哔哩哔哩日常实习_测开面经

📑哈喽,大家好,我是小浪;本篇博客更新的是最新B站测开面经,本专栏非常适合目前准备找实习,或者准备冲秋招测试,测开方向的同学阅读订阅,持续更新各大厂真题面经,带你成为offer收割机!! 🧃对于订阅本专栏的同学们,博主在努力更新,只需要一杯奶茶钱,订阅本专栏,…

数据结构(三)—— 哈希表

文章目录 一、哈希表积累1.1 哈希map1.2 哈希set 二、哈希表基础三、题3.1 242 有效的字母异位词3.2 349 两个数组的交集3.3 202 快乐数3.4 1 两数之和3.5 54 四数相加II 一、哈希表积累 什么时候想到用哈希法&#xff1a;当要需要查询一个元素是否出现过、判断一个元素是否出…

从单兵作战到生态共创,纵目科技打响智驾2.0新战役

4月18日&#xff0c;第十二届上海国际汽车工业展览会&#xff08;简称&#xff1a;2023上海车展&#xff09;在上海国家会展中心盛大启幕。纵目科技携最新自动驾驶解决方案——Amphiman 3000、8000行泊一体解决方案、Trinity 3000、8000舱行泊一体解决方案以及众多摄像头产品强…

C++智能指针unique_ptr

智能指针的设计思路 智能指针是类模板&#xff0c;在栈上创建智能指针对象。把普通指针交给智能指针对象。当智能指针对象过期时&#xff0c;调用析构函数释放普通指针的内存。 有unique_ptr,shared_ptr和weak_ptg三种智能指针 unique_ptr unique_ptr独享它指向的对象&…

深度学习笔记之残差网络(ResNet)

深度学习笔记之残差网络[ResNet] 引言引子&#xff1a;深度神经网络的性能问题核心问题&#xff1a;深层神经网络训练难残差网络的执行过程残差网络结构为什么能够解决核心问题残差网络的其他优秀性质 引言 本节将介绍残差网络( Residual Network,ResNet \text{Residual Netwo…