- 浏览: 1586789 次
- 性别:
- 来自: 吉林
文章分类
- 全部博客 (624)
- C/C++ (33)
- Java (181)
- 网络相关 (7)
- 我爱篮球 (3)
- 也爱足球 (4)
- 杂谈 (1)
- 系统架构 (3)
- Web Service (14)
- Framework (3)
- 系统命令 (8)
- 管理平台相关 (8)
- 其它 (35)
- Websphere (1)
- Struts2 (24)
- Hibernate (16)
- Spring (23)
- javascript (20)
- jquery (23)
- html/css/div (28)
- 数据库 (40)
- JavaWeb (27)
- 设计模式 (2)
- 文档编写 (3)
- SVN (5)
- Ant (1)
- Maven (13)
- 软件项目管理 (8)
- AOP (1)
- kindeditor (1)
- JSON (2)
- Servlt/JSP (4)
- WordXML (2)
- XML (12)
- 面试相关 (7)
- Tomcat (11)
- 性能与调优 (29)
- 职业发展 (2)
- 操作系统 (7)
- AJAX (2)
- DWR (1)
- Eclipse (12)
- 持续集成 (3)
- 批处理命令 (1)
- Mozilla Rhino (2)
- 新鲜技术 (18)
- Apache mina (2)
- 底层技术 (18)
- Linux (22)
- 新鲜技术,IT历史 (1)
- 敏捷开发 (1)
- 版本控制 (5)
- 较火技术 (7)
- 集群 (2)
- Web前端 (13)
- 报表工具 (3)
- 网站架构 (5)
- 大数据 (8)
- 分布式存储 (5)
- 云计算 (8)
- TCP/IP协议 (1)
- 负载均衡 (3)
- 硬件 (1)
- 表现层技术 (3)
- Velocity (3)
- jvm (6)
- 并发编程 (10)
- hadoop (8)
- 数据结构和算法 (12)
- 计算机原理 (1)
- 测试驱动开发-TDD (3)
- 开发技巧 (1)
- 分词器 (1)
- 项目构建工具 (2)
- JMX (4)
- RMI (1)
- 测试技术 (22)
- 网络完全 (1)
- Git (4)
- apache开源包 (4)
- Java常用 (1)
- mock (2)
- OSGi (2)
- MongoDB (1)
- JBPM (1)
- Storm (3)
- mysql (2)
- telnet (1)
- 正则表达式 (1)
- bootstrap (4)
- Apache ActiveMQ (1)
- redis (9)
- Nginx (2)
- rsync+inotify文件同步 (2)
- testng (1)
- 原型设计工具 (1)
- 工程能力 (1)
- 风险控制 (3)
- ibatis (1)
- 分布式 (4)
- 安全技术 (1)
- 计算机基础 (4)
- 消息中间件 (1)
- UML (2)
最新评论
-
u012236967:
java命令执行jar包(里面的main函数)的方式(包括依赖其它的jar包问题) -
世界尽头没有你:
Selenium自动化测试从入门到精通(Java版)百度网盘地 ...
自动化测试工具 Selenium WebDriver 入门教程(针对主流浏览器) -
小小西芹菜:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
dwr实现Reverse Ajax推送技术的三种方式 -
hellozhouqiao:
楼主,请教一点问题.现在我们需要在excel 的页脚里面加上图 ...
FreeMaker + xml 导出word(处理目录,图片和页眉页脚问题) -
乱在长安:
使用Timer会有各种各样的问题好嘛?!书上推荐使用Sched ...
DelayQueue (ScheduledThreadPoolExecutor调度的实现)
在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢? template<class T>
相信学习C++的人对class这个关键字都非常明白,class用于定义类,在模板引入c++后,最初定义模板的方法为: template<class T>......
在这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typename这个关键字,它的作用同class一样表明后面的符号为一个类型,这样在定义模板的时候就可以使用下面的方式了: template<typename T>......
在模板定义语法中关键字class与typename的作用完全一样。
typename难道仅仅在模板定义中起作用吗?其实不是这样,typename另外一个作用为:使用嵌套依赖类型(nested depended name),如下所示:
class MyArray
{
public:
typedef int LengthType;
.....
}
void MyMethod( T myarr )
{
typedef typename T::LengthType LengthType;
LengthType length = myarr.GetLength;
}
这个时候typename的作用就是告诉c++编译器,typename后面的字符串为一个类型名称,而不是成员函数或者成员变量,这个时候如果前面没有typename,编译器没有任何办法知道T::LengthType是一个类型还是一个成员名称(静态数据成员或者静态函数),所以编译不能够通过。
发表评论
-
COM(Component Object Model)组件介绍
2013-01-15 17:38 1516COM component(COM组件)是微软公司为了计算机 ... -
scanf的用法
2012-05-31 23:37 1463scanf()函数的用法和实 ... -
定义计算变量相对于结构体偏移量的宏
2012-05-30 22:42 2818#include <stdio.h> #incl ... -
C语言一些有用的宏定义
2012-05-30 22:36 1765C语言宏定义技巧(常用宏定义) 写好C语 ... -
C语言const
2012-05-30 14:35 1259原文地址:http://hi.baidu. ... -
C语言void指针
2012-05-29 09:50 13601.概述 本文将对void关键字的深刻含义进行解说,并 ... -
C语言中#line 宏说明
2012-05-28 09:38 1844c语言里有个很少用到的宏 #line,这个宏通常是和__LIN ... -
C语言中宏的一些特别用法
2012-05-28 09:36 1724转载 C语言中如何使用宏C(和C++)中的宏(Macro)属 ... -
C语言编译执行的全过程
2012-05-28 09:13 1237编译,编译程序读取源程序(字符流),对之进行词法和语法的分 ... -
C++新型头文件与名称空间的作用
2012-05-25 09:06 18691.20 新型头文件与名字 ... -
程序在内存中运行的奥秘
2010-07-01 12:18 1842内存管理是操作系统的核心功能,无论对于开发者还是系统管理员内存 ... -
堆和栈的区别
2010-06-29 10:56 1648栈是随函数被调用时分 ... -
原码,补码,反码(针对byte(128) = -128的问题)
2010-06-25 16:40 4137int a = 128; byte b = (byte)a; ... -
链表常见笔试题
2010-06-25 11:22 3465链表的一些常见笔试面试问题总结及代码 ... -
C与C++中struct的区别,以及C++中struct与Class的区别
2010-06-25 10:44 4195C中struct只可以放成员变量,没有访问权限限制,外部可以访 ... -
C++中的inline用法总结
2010-05-26 22:26 18809inline函数的作用 ... -
C++枚举类型用途及定义详解
2010-05-26 21:14 4579C++编程语言作为一种功 ... -
C++与Java比较(转)
2010-04-30 23:02 4460“作为一名C++程序员,我们早已掌握了面向对象程序设计的基本概 ... -
几款常见C++编译器的比较
2010-04-30 22:58 5726另外,就我个人的一点点经验来看,vs 2005中的C++编译器 ... -
C/C++编译过程理解
2010-04-30 22:31 2740标准C和C++将编译过程定义为9个阶段(Phases of T ...
相关推荐
虽然在模板参数列表中,`typename`和`class`可以互换使用,但它们在某些特定情境下有微妙的区别: - 在非模板上下文中,`class`用于声明类,而`typename`不存在。 - 在模板实例化后,`class`关键字的声明会被解析为...
在C++模板编程中,`class`和`typename`关键字都用于声明模板参数,但在特定情况下,它们之间存在微妙的差异。首先,我们要明确一点,那就是在声明模板参数时,`class`和`typename`是等价的。例如: ```cpp template...
下面详细解释`typename`关键字在C++模板中的用法。 首先,让我们解释模板的基本概念。在C++中,模板的声明通常会以关键字`template`开始,后面跟着一个或多个模板参数列表,模板参数可以是类型参数,也可以是非类型...
10. template:template是C++中的一种关键字,用于声明一个模板。例如,`template <typename T> class A { ...; };`这里声明了一个名为A的模板。 11. throw:throw是C++中的一种关键字,用于抛出一个异常。例如,`...
为了解决`class`关键字在模板上下文中可能引起的混淆,C++标准委员会在后续版本的标准中引入了`typename`关键字,专门用于模板参数的声明。`typename`的引入不仅提供了清晰性,还增强了C++的可读性和可维护性。现在...
在C++编程语言中,`typename` 和 `class` 关键字在模板(template)上下文中有相似但不完全相同的意义。尽管它们在定义模板时可以互换使用,但它们在处理依赖类型(dependent types)时有着显著的区别。让我们深入...
在C++模板编程中,`class`和`typename`关键字看似可以互换,但实际上它们在特定情况下有着重要的区别。在声明模板时,`class`和`typename`都可以用来指定模板参数,但涉及到从属类型(dependent type)时,两者的...
C++关键字大全(67个) asm auto bad_cast bad_typeid bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum except explicit extern false finally float ...
1、在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢? 答:class用于定义类,在模板引入c++后,初定义模板的方法为:template<class>,这里class...
模板参数包括类型参数(`typename`或`class`关键字指定)和非类型参数(通常为整型或指针)。类型参数用于表示任意类型,非类型参数可以是具体的值。例如: ```cpp template <typename T, int N> T arrayProduct(T ...
- 类型参数:在模板声明中,`typename`或`class`关键字后的标识符是类型参数,例如`T`。在实例化模板时,我们可以用实际的类型来替换这些类型参数,如`max(3, 5)`。 - 非类型参数:除了类型参数外,还可以有非类型...
侯捷老师的《C++Template》一书深入浅出地介绍了C++模板的各个方面,包括基础概念、高级技巧以及实际应用,对于理解和掌握C++模板编程有着极大的帮助。通过阅读这本书,开发者可以更好地利用模板这一强大的工具,...
例如,`template<typename Key, typename Value> class Map` 定义了一个键值对映射容器的模板,可以实例化为`Map, string>`或`Map, double>`等。 3. **模板参数** 模板参数可以是类型参数(如`T`)和非类型参数...
在深入探讨C++中`typename`关键字的双层含义之前,我们先来简要回顾一下C++模板的基础知识。模板是C++的一项强大特性,它允许程序员编写泛型代码,即能够处理不同类型数据的代码。这极大地提高了代码的重用性和灵活...
在C++编程语言中,`typename`关键字是一个非常重要的元素,尤其在模板(template)编程中扮演着关键角色。本文将深入探讨`typename`的作用、使用场景及其与`class`关键字的区别。 首先,`typename`和`class`在声明...
例如,`template<typename T> class Stack { ... }`,这可以创建一个可以存储不同类型元素的栈。 2. **模板参数**: - **类型参数**(如`T`):代表任意数据类型,在实例化时会被具体的数据类型替换。 - **非类型...