为了账号安全,请及时绑定邮箱和手机立即绑定

求指教,这个数据结构C++中template <typename Type> 是什么意思?

求指教,这个数据结构C++中template <typename Type> 是什么意思?

宝慕林4294392 2021-05-05 16:07:19
template <typename Type> int SeqList<Type>::Insert(Type x, int i)这里我知道是个函数模板,但是这里SeqList已经有数据类型是int,后面的<Type>是什么意思?
查看完整描述

2 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

实际上可以说没有区别。

按 C++ 标准来说,template<typename T> 用于基础数据类型,typename 指类型名,T 可以取 char int double 等。

template<class T> 用于类,T 可以取任何类。

但是这里有一个问题,结构体应该用 typename 还是 class? 结构体肯定不是基础数据类型,但也不是类。

所以实际情况是,template<class T> 的 T 也可以取基础数据类型,tempate<typename T> 的 T 也可以取类。

但有一个特例,就是当 T 是一个类,而这个类又有子类(假设名为 innerClass) 时,应该用 template<typename>:

typename T::innerClass myInnerObject;

这里的 typename 告诉编译器,T::innerClass 是一个类,程序要声明一个 T::innerClass 类的对象,而不是声明 T 的静态成员,而 typename 如果换成 class 则语法错误。

查看完整回答
反对 回复 2021-05-09
  • 2 回答
  • 0 关注
  • 432 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信