C++参数化类型.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++参数化类型.pdf

Articles of 兮兮软软 使使用用C++的的语语言言内内模模板板的的方方式式:参参数数化化类类型型 2011-09-21 05:09:39 minlearn (%)使用C++的语言内模板的方式 : 参数化类型我们这里讲解的是C++的语言内的advanced oo技术 。当 然.将设 做到语言内的,还有Python的de corator和generator等. TOC 1 实例化 2 参数推导 3 模板与泛型编程 4 泛型的抽象意义 5 trait ,concept,model 6 iterater 7 adapter 8 真正的策略 9 C++ 中的编程层次与设 层次 10 C++ 中的元编程 11 泛型编程其实是一定程度上的自然语言编程 实实例例化化 首先我们要弄懂实例化,它本质上是一种编译器技术.它对我们编程带来的功能就是: 编译期参数化推导.参 数推导给C++带来强大语言能力的机制(泛编程和元编程),也给我们带来了不小的学习曲线. 这节先讲实例 化,下一节将着重谈参数推导. 什么是实例化呢?注意这个字眼  在OO程序设 中,由一个cla 定义一个 对象并不实际动态分配内存,因为这还是指为运行期作规划的设 期并没有实际进入到运行期并分配了一 个内存, 如果用了new关键字,还是没有分配内存(因为是在写源程序的时机没有运行),编译期永远不实际分 配内存而只是在作某种分配 划,只是按照源程序所写为程序将来在运行期如何获得内存作分配上的控制 而已,,这是一种针对运行期的实例化. 可是编译器不光是指运行时,还指编译器前端的转换,实例化并不一定 指为运行期实际实例化(也就是说实例化并不一定就是一种“为运行而作设 ”的写源程序动作,,它还可以是 一种“为设 期而作设 ”的写作动作,)它其实就是一种编译期的宏,只不过它有类型的判断,因此远远不是 简单的文字替换性质的宏,,而是一种编译技术,模板由于有这个特性,第一,因为它是泛型,所以为C++带来泛 型编程机制,第二,因为模板编译技术的图灵完备,它使C++编译器也有解释能力(只能解释那些在不使用到 运行时,等运行期设施时),这也就是说,它有运行能力,这给模板给C++带来元编译技术. 这种实例化就是针 对编译器本身的实例化. 所以说,实例化是多义的,针对运行时和编译器前端的实例化,只不过一个实例化用 了不同的情景而已 什么是元呢?元就是大一,古人常常把世界归为,金木水火土,企图用这些东西作为其它一切事 物的“原型,元素”来描述其它事物,比如它们说“水主..金主XX”,所以,元,就是描述其它东西的那 个上上层原型. 1 即我们通常的编程 是面向运行期的,而不是面向程序如何被编译的(编译器),这就是说,我们编制的程序只 会运行,编译器只管转换的事.那么如果现在我们想将设 推早到针对编译转换发生的时候呢,即如果对转 换动作也在源程序级作控制呢?这在C++ 中同样存在,这种控制编译的手段之一便是:预处理,编译器宏设施 (稍后会谈到模板的实例化也可以达到这样一种效果). 让我们回顾一下编译原理,编译,运行,前端,后端诸如此类的概念,我们知道高级语言的过程,词 法分析和语法分析构成了编译器的前端(得出一个抽象语法树),然后是语义分析,然后是中间码 或目标码生成(如果有一个虚拟机,比如JVM和JAVA语言,那么这个 目标码就是JVM中解释器要 执行的目标, 如果是裸机器本身,那么就是一种接近二进制但不是最终二进制的表示形式,当然 一般在生成最终 目标码之前要先生成中间码),然后是对生成的目标码进行优化, 优化之后进行 汇编形成真正的二进制. 但其实编译非运行,我们知道运行期才能申请到系统资源,才能进行 算机的所谓运算, 其实对编译期和运行期的误解一切的罪原是解释语言跟编译语言的区别(如 果没有编译后端,那么运行期的目标就是中间代码即源程序初步变换了的形式而不是 目标平台 的程序),我们知道,在编译前端完全之后,代码就被生成了,对于解释器来说,编译后端是不必需 的,此时它就

文档评论(0)

cai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档