File tree 1 file changed +34
-1
lines changed
1 file changed +34
-1
lines changed Original file line number Diff line number Diff line change 655
655
656
656
### 9.1 The Inclusion Model
657
657
658
- -
658
+ - 不像普通函数将声明和定义分散在.h文件和.cpp文件中,因为这样会导致链接问题,因此常见的解决方案是在声明模板的头文件中包含模板的定义
659
+ - 但是这种方法可能大大增加了包含头文件的成本,因为代价是必须包含模板定义所使用的头文件
660
+ - 尽管存在构建时问题,但仍然建议尽可能使用“包含模型”的方式来组织模板代码,除非有更好的机制可用(这样的机制已经有了,即modules)
661
+ - 关于“包含模型”的另一个 (更微妙的) 结果是非内联函数模板与内联函数和宏有所不同,它们没有在调用点展开
662
+
663
+ ### 9.2 Templates and inline
664
+
665
+ - 将函数声明为内联是提高程序运行时间的常用方式,内联说明符旨在提示在调用点内联替换函数体的实现优先于通常的函数调用机制
666
+ - 但是,实现可能会忽略这个提示,因此,内联唯一可以保证的是,允许函数定义在程序中出现多次 (通常函数出现在需要在多个地方包含的头文件中)
667
+
668
+ - 与内联函数一样,函数模板可以在多个翻译单元中定义,这通常是因为将定义放在由多个 CPP 文件包含的头文件中导致的
669
+ - 但这并不意味着函数模板默认使用内联替换,模板函数是否\何时在调用点内联替换完全取决于编译器
670
+
671
+ ### 9.3 Precompiled Headers
672
+
673
+ ### 9.4 Decoding the Error Novel
674
+
675
+ ### 9.5 Afternotes
676
+
677
+ ### 9.6 Summary
678
+
679
+ - 模板的包含模型是组织模板代码广泛使用的方式,备选方案将在第 14 章中讨论
680
+ - 只有在类或结构外部的头文件中定义函数模板的特化时才需要内联
681
+ - 要利用预编译的头文件,请确保对 #include 保持相同的顺序。
682
+ - 调试使用模板的代码很有挑战性
683
+
684
+ ## Chapter 10 Basic Template Terminology
685
+
686
+ ### 10.1 “Class Template” or “Template Class”?
687
+
688
+ - 术语“Class Template”表示类是一个模板。也就是说,它是一族类的参数化描述。
689
+
690
+ ### 10.2 Substitution, Instantiation, and Specialization
691
+
659
692
660
693
661
694
## Appendix B Value Categories
You can’t perform that action at this time.
0 commit comments