11、C++模板解析与类模板派生详解

C++模板解析与类模板派生详解

1. 模板解析基础

在C++编程中,编译器的两个基本活动是分词(tokenization,也称为扫描或词法分析)和解析(parsing)。分词过程将源代码作为字符序列读取,并从中生成一系列标记(tokens)。例如,对于代码 int* p = 0; ,分词器会生成关键字 int 、符号/运算符 * 、标识符 p 、符号/运算符 = 、整数常量 0 和符号/运算符 ; 的标记描述。

解析器则会通过递归地将标记或先前找到的模式归约为更高级别的构造,在标记序列中找到已知模式。例如,标记 0 是一个有效的表达式, * 后跟标识符 p 是一个有效的声明符,该声明符后跟 = 再后跟表达式 0 也是一个有效的声明符。最后,关键字 int 是一个已知的类型名,当它后跟声明符 *p = 0 时,就得到了 p 的初始化声明。

2. 非模板中的上下文敏感性

分词比解析更容易,虽然解析有坚实的理论基础,许多有用的语言使用该理论解析并不困难,但该理论最适用于上下文无关语言,而C++是上下文敏感的。为了处理这个问题,C++编译器会将符号表与分词器和解析器结合起来:当解析一个声明时,它会被录入符号表。当分词器找到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值