C++template中typename 和class有什么区别

 我来答
就烦条0o
2016-09-11 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
又是历史原因,以前是用class,后来C++ Standard 出现后,引入了typename, 所以他们是一样的。

但是,又有一些微妙的不同,因为有时候,你不得不使用typename.

1. 在声明 template parameters(模板参数)时,class 和 typename 是可互换的。

2. 用 typename 去标识 nested dependent type names(嵌套依赖类型名),在 base class
lists(基类列表)中或在一个 member initialization list(成员初始化列表)中作为一个 base class
identifier(基类标识符)时除外。

For example:

1 using namespace std;
2
3 template <class T> int vcount(vector<T> v) {
4 int i;
5 typename vector<T>::iterator vi;
6 for(i=0,vi=v.begin(); vi!=v.end(); i++,vi++)
7 ;
8 return(i);
9 }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式