typename 和 class在模板使用的时候的区别
来源:互联网 发布:淘宝优惠券抢不到 编辑:程序博客网 时间:2024/05/06 02:29
如果是模板的声明如:template <class T> //template<typename T> 他们两个是没区别的,只是习惯而已:本人习惯用typename因为这个看起来不限于class类;本来在设计C++的时候为了减少关键字是不要设计typename了,但是在内嵌依赖类型中typename 用到所以也就这能增加了typename关键字()。下面有对内嵌依赖类型名讲解;
template <class T> //template<typename T>
class name{
name(){
}
void method(){
}
}
template <class T>
void template<class T> name::method(){
}
内嵌依赖类型名的情况:
template<typename C>
void print2nd(const C& container)
{
C::const_iterator * x;
...
}
这看上去好像是我们将 x 声明为一个指向 C::const_iterator 的 local variable(局部变量)。但是它看上去如此仅仅是因为我们知道 C::const_iterator 是一个 type(类型)。但是如果 C::const_iterator 不是一个 type(类型)呢?如果 C 有一个 static data member(静态数据成员)碰巧就叫做 const_iterator 呢?再如果 x 碰巧是一个 global variable(全局变量)的名字呢?在这种情况下,上面的代码就不是声明一个 local variable(局部变量),而是成为 C::const_iterator 乘以 x!当然,这听起来有些愚蠢,但它是可能的,而编写 C++ 解析器的人必须考虑所有可能的输入,甚至是愚蠢的。
那么我们只能通过在
template<typename C>
void print2nd(const C& container)
{
typename C::const_iterator * x;
...
}
这样来确定const_iterator一定是类型而不是变量;
- typename 和 class在模板使用的时候的区别
- c++中模板使用时候typename和class的区别
- c++中模板使用时候typename和class的区别
- Typename和Class在声明模板时的区别
- Typename和Class在声明模板时的区别
- c++中关于模板的typename和class的区别
- class 和 typename的区别
- typename和class的区别
- typename和class的区别
- typename和class的区别
- typename和class的区别
- C++ 模板中的typename和class的区别
- 定义模板时typename和class的区别
- C++ 模板中的template typename 和template class的区别
- C++模板中typename和class的区别
- C++中typename和class在声明模板时的区别
- C++ 模板class与typename的区别
- C++模板 typename跟class的区别
- zoj2507 Let's play a game
- Pseudo-Random Numbers UVA350
- 关于需求分析的文档模板该怎么写
- 100盏灯泡的开关问题
- 2014各大网络公司校招笔试题
- typename 和 class在模板使用的时候的区别
- 利用Halcon进行单目标定,及问题小结
- 利用贪心算法解背包问题
- 博弈论 负极大值算法
- 在Groovy中编写正则表达式
- CHECK
- linux移植笔记
- HDU Ads Proposal 【树状数组】
- 给自己留个印象 myeclipse svn提交文件夹的过滤