目前位置: VCer资源中心 >>> VCer读书

[本帖已阅读2316次 分值90 回复0次] 张贴资源 发回信箱 控制面板

C++_Templates_TheCompleteGuide

提供者:pyl2001 张贴时间:2004-04-30 17:55:39.0 出处:vcer.net 作者:不祥

C++_Templates_TheCompleteGuide(2004-04-30 17:55:39.0)


heart


 
级别: VCer排长
头衔: VCer会员

经验: 684
作品: 12
分会: 华东分会
注册: 2004-03-09 16:33:38.0
登录: 2005-02-04 22:44:17.0
电子版[741,720字节] 下载638

介绍

模板是C++功能强大的特性之一,然而却常常被人们所忽视、误解与误用。本书将帮助软件设计师、工程师清晰理解为什么、何时及如何使用模板来构建及维护简洁、快速、灵活的高效软件。

    本书是一本对基本概念和语言特性有着深刻见解的指南性书籍,同时也是一本包含内容广泛的参考性书籍。本书首先讲述了语言细节,然后对编码技巧进行了广泛的讨论,最后还对模板的高级应用进行了阐述、分析。贯串全书的示例阐明了抽象概念并演示了最优实践方法。

 读者将学习到

?正确的模板行为

?如何避开与模板相关的错误陷阱

?从基础的到早前没有文字约定的惯用语法和技巧

?如何在不对性能和安全性造成损害的前提下进行源代码重用

?如何提高C++程序的效率

?如何构建更高灵活性和可维护性的软件

本书将引导程序员全面完整地开发C++的功能强大特性——模板特性。

“本书最吸引我的地方就是它对模板的两个方面进行了深刻地阐述:模板的结构和用法。很少有对设计和使用同时进行论述的书籍。书中的示例都是一流的、简明的,并且进行了详细说明。”

——Patrick McKillen,图像数据咨询有限公司。

“本书介绍了有关模板的所有缺点和陷阱。每一个都是你不想知道,但却是保证模板使用效率所必需的。”

——Dietmar Kuhl

 

 Preface.

Acknowledgments.

1. About This Book.

What You Should Know Before Reading This Book.

Overall Structure of the Book.

How to Read This Book.

Some Remarks About Programming Style.

The Standard versus Reality.

Example Code and Additional Information.

Feedback.

I. THE BASICS.

2. Function Templates.

 

A First Look at Function Templates.

Defining the Template.

Using the Template.

Argument Deduction.

Template Parameters.

Overloading Function Templates.

Summary.

3. Class Templates.

 

Implementation of Class Template Stack.

Declaration of Class Templates.

Implementation of Member Functions.

Use of Class Template Stack.

Specializations of Class Templates.

Partial Specialization.

Default Template Arguments.

Summary.

4. Nontype Template Parameters.

 

Nontype Class Template Parameters.

Nontype Function Template Parameters.

Restrictions for Nontype Template Parameters.

Summary.

5. Tricky Basics.

 

Keyword typename.

Using this->.

Member Templates.

Template Template Parameters.

Zero Initialization.

Using String Literals as Arguments for Function Templates.

Summary.

6. Using Templates in Practice.

 

The Inclusion Model.

Linker Errors.

Templates in Header Files.

Explicit Instantiation.

Example of Explicit Instantiation.

Combining the Inclusion Model and Explicit Instantiation.

The Separation Model.

The Keyword export.

Limitations of the Separation Model.

Preparing for the Separation Model.

Templates and inline.

Precompiled Headers.

Debugging Templates.

Decoding the Error Novel.

Shallow Instantiation.

Long Symbols.

Tracers.

Oracles.

Archetypes.

Afternotes.

Summary.

7. Basic Template Terminology.

 

“Class Template” or “Template Class”?

Instantiation and Specialization.

Declarations versus Definitions.

The One-Definition Rule.

Template Arguments versus Template Parameters.

II. TEMPLATES IN DEPTH.

8. Fundamentals in Depth.

 

Parameterized Declarations.

Virtual Member Functions.

Linkage of Templates.

Primary Templates.

Template Parameters.

Type Parameters.

Nontype Parameters.

Template Template Parameters.

Default Template Arguments.

Template Arguments.

Function Template Arguments.

Type Arguments.

Nontype Arguments.

Template Template Arguments.

Equivalence.

Friends.

Friend Functions.

Friend Templates.

Afternotes.

9. Names in Templates.

 

Name Taxonomy.

Looking Up Names.

Argument-Dependent Lookup.

Friend Name Injection.

Injected Class Names.

Parsing Templates.

Context Sensitivity in Nontemplates.

Dependent Names of Types.

Dependent Names of Templates.

Dependent Names in Using-Declarations.

ADL and Explicit Template Arguments.

Derivation and Class Templates.

Nondependent Base Classes.

Dependent Base Classes.

Afternotes.

10. Instantiation.

 

On-Demand Instantiation.

Lazy Instantiation.

The C++ Instantiation Model.

Two-Phase Lookup.

Points of Instantiation.

The Inclusion and Separation Models.

Looking Across Translation Units.

Examples.

Implementation Schemes.

Greedy Instantiation.

Queried Instantiation.

Iterated Instantiation.

Explicit Instantiation.

Afternotes.

11. Template Argument Deduction.

 

The Deduction Process.

Deduced Contexts.

Special Deduction Situations.

Allowable Argument Conversions.

Class Template Parameters.

Default Call Arguments.

The Barton-Nackman Trick.

Afternotes.

12. Specialization and Overloading.

 

When “Generic Code” Doesn't Quite Cut It.

Transparent Customization.

Semantic Transparency.

Overloading Function Templates.

Signatures.

Partial Ordering of Overloaded Function Templates.

Formal Ordering Rules.

Templates and Nontemplates.

Explicit Specialization.

Full Class Template Specialization.

Full Function Template Specialization.

Full Member Specialization.

Partial Class Template Specialization.

Afternotes.

13. Future Directions.

 

The Angle Bracket Hack.

Relaxed typename Rules.

Default Function Template Arguments.

String Literal and Floating-Point Template Arguments.

Relaxed Matching of Template Template Parameters.

Typedef Templates.

Partial Specialization of Function Templates.

The typeof Operator.

Named Template Arguments.

Static Properties.

Custom Instantiation Diagnostics ..

Overloaded Class Templates.

List Parameters.

Layout Control.

Initializer Deduction.

Function Expressions.

Afternotes.

III. TEMPLATES AND DESIGN.

14. The Polymorphic Power of Templates.

 

Dynamic Polymorphism.

Static Polymorphism.

Dynamic versus Static Polymorphism.

New Forms of Design Patterns.

Generic Programming.

Afternotes.

15. Traits and Policy Classes.

 

An Example: Accumulating a Sequence.

Fixed Traits.

Value Traits.

Parameterized Traits.

Policies and Policy Classes.

Traits and Policies: What's the Difference?

Member Templates versus Template Template Parameters.

Combining Multiple Policies and/or Traits.

Accumulation with General Iterators.

Type Functions.

Determining Element Types.

Determining Class Types.

References and Qualifiers.

Promotion Traits.

Policy Traits.

Read-only Parameter Types.

Copying, Swapping, and Moving.

Afternotes.

16. Templates and Inheritance.

 

Named Template Arguments.

The Empty Base Class Optimization (EBCO).

Layout Principles.

Members as Base Classes.

The Curiously Recurring Template Pattern (CRTP).

Parameterized Virtuality.

Afternotes.

17. Metaprograms.

 

A First Example of a Metaprogram.

Enumeration Values versus Static Constants.

A Second Example: Computing the Square Root.

Using Induction Variables.

Computational Completeness.

Recursive Instantiation versus Recursive Template Arguments.

Using Metaprograms to Unroll Loops.

Afternotes.

18. Expression Templates.

 

Temporaries and Split Loops.

Encoding Expressions in Template Arguments.

Operands of the Expression Templates.

The Array Type.

The Operators.

Review.

Expression Templates Assignments.

Performance and Limitations of Expression Templates.

Afternotes.

IV. ADVANCED APPLICATIONS.

19. Type Classification.

 

Determining Fundamental Types.

Determining Compound Types.

Identifying Function Types.

Enumeration Classification with Overload Resolution.

Determining Class Types.

Putting It All Together.

Afternotes.

20. Smart Pointers.

 

Holders and Trules.

Protecting Against Exceptions.

Holders.

Holders as Members.

Resource Acquisition Is Initialization.

Holder Limitations.

Copying Holders.

Copying Holders Across Function Calls.

Trules.

Reference Counting.

Where Is the Counter?

Concurrent Counter Access.

Destruction and Deallocation.

The CountingPtr Template.

A Simple Noninvasive Counter.

A Simple Invasive Counter Template.

Constness.

Implicit Conversions.

Comparisons.

Afternotes.

21. Tuples.

 

Duos.

Recursive Duos.

Number of Fields.

Type of Fields.

Value of Fields.

Tuple Construction.

Afternotes.

22. Function Objects and Callbacks.

 

Direct, Indirect, and Inline Calls.

Pointers and References to Functions.

Pointer-to-Member Functions.

Class Type Functors.

A First Example of Class Type Functors.

Type of Class Type Functors.

Specifying Functors.

Functors as Template Type Arguments.

Functors as Function Call Arguments.

Combining Function Call Parameters and Template Type Parameters.

Functors as Nontype Template Arguments.

Function Pointer Encapsulation.

Introspection.

Analyzing a Functor Type.

Accessing Parameter Types.

Encapsulating Function Pointers.

Function Object Composition.

Simple Composition.

Mixed Type Composition.

Reducing the Number of Parameters.

Value Binders.

Selecting the Binding.

Bound Signature.

Argument Selection.

Convenience Functions.

Functor Operations: A Complete Implementation.

Afternotes.

APPENDIXES.

A: The One-Definition Rule.

 

Translation Units.

Declarations and Definitions.

The One-Definition Rule in Detail.

One-per-Program Constraints.

One-per-Translation Unit Constraints.

Cross-Translation Unit Equivalence Constraints.

B: Overload Resolution.

 

When Does Overload Resolution Kick In?

Simplified Overload Resolution.

The Implied Argument for Member Functions.

Refining the Perfect Match.

Overloading Details.

Prefer Nontemplates.

Conversion Sequences.

Pointer Conversions.

Functors and Surrogate Functions.

Other Overloading Contexts.

 

注:转载文章需注明来源:VCer.net 文章地址:http://vcer.net/2017.html

  如果你觉得VCer.net不错,而且你愿意为VCer.net捐赠一元钱,那么点击后面的捐赠按钮吧:) vcer.net捐赠

[回复该贴] [加入个人书签]
[投票结果]

A: 评分 10 100% (1 票)
B: 评分 5 0% (0 票)
C: 评分 0 0% (0 票)
D: 评分 -5 0% (0 票)
E: 评分 -10 0% (0 票)