- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OOP(C++)_第12章_模板(最终版).ppt
第12章 模板 Template 面向对象程序设计 C++ 12.1 引言 12.1 引言:IntStack 12.2 代码重用 12.2 如何实现代码重用? 12.2.1 C的方法之一:代码拷贝 12.2.2 C的方法之二:typedef 12.2.3 smalltak方法 略 12.2.4 C++的方法:模板 12.3 模板语法 12.3.1 类模板定义 12.3.2 类模板实例化 12.3.3 类对象生成 类模板与类的实例化 12.3.4 非内联函数定义 一个值得注意的问题! 12.3.4.1 语法 12.3.4.2 关于头文件 对类来说,在创建非内联函数定义时,我们通常把定义放在.h文件中,而把实现放在.cpp中。 (实际上是所谓的头文件原则:“在头文件中,不要放置分配存储空间的任何东西”,为了防止在连接期间的多重定义错误。) 对模板来说,即使是在创建非内联函数定义时,模板的所有定义和实现都必须放入一个头文件中。 why? 因为模板很特殊,在template … 之后的任何东西都意味着编译器在当时不为它分配存储空间(即不编译成目标代码),而是一直处于等待状态直到一个模板示例被告知。 如果没有被实例化,模板不会被编译成目标代码: From MSDN: Linker Tools Error LNK2001 unresolved external symbol symbol Code will generate this error message if it references something like a function, variable, or label that the linker can’t find in all the libraries and object files it searches. In general, there are two reasons this error occurs: what the code asks for doesn’t exist the symbol is spelled incorrectly or uses the wrong case, for example , or the code asks for the wrong thing you are using mixed versions of the libraries?some from one version of the product, others from another version . Numerous kinds of coding and build errors can cause LNK2001. Several specific causes are listed below, and some have links to more detailed explanations. …… 12.3.5 模板中的常量 例:模板中的常量 12.4 模板的派生 12.4.1 从类派生模板 12.4.2 从类模板派生模板 12.4.2 从类模板派生模板 续 12.5 函数模板 12.5.1 函数模板的定义 例1:求两个对象间的最大值 例2:关于模板参数 12.5.2 函数模板的实例化 12.5.2 函数模板的重载 12.6 小结 template class Stack T *v; // 栈底 T *p; // 栈顶 int sz; // 栈的大小 public: Stack int s; ~Stack ; void push T a ; T pop ; int size ; ; 文件:Stack.h template Stack ::Stack int s v p new T[sz s]; template Stack :: ~Stack delete[ ] v; template void Stack :: push T a *p++ a ; template T Stack :: pop return * -- p ; template int Stack :: size const return p-v; ; 文件:Stack.cpp #include “Stack.h” void main Stack si 10 ; si.push 1 ; // 连接错误 文件:test.cpp error LNK2001: unresolved external symbol public: int __thiscall Stack ::push i
您可能关注的文档
最近下载
- 《2019公路工程施工安全防护设施技术指南广东版》贯标培训资料.pptx VIP
- 2024-2025学年小学音乐一年级上册冀少版(2024)教学设计合集.docx
- Q_GJXH 5-2020玻璃门锁企业标准.pdf
- 石油钻采设备及工艺自喷井采油及设备.pptx VIP
- 《 甘肃省公路工程施工安全内业资料指南 》.pdf VIP
- 三类汽车维修管理制度.docx
- 中美网络众筹融资模式比较研究--以Kickstarter和点名时间网站为例.pdf VIP
- 211安全工作法讲义 中原油田安全环保处.ppt VIP
- 2025年小学秋季开学家长会《育心育智,共促成长》.pptx
- 城市轨道交通供电系统分析.doc VIP
文档评论(0)