摘要: C++ 模板 (C++ Templates) 第一部分 基本概念 (The Basics) 这一部分介绍C模板常见的概念和语言特性,通过展现**函数模板(function templates)和类模板(class templates)**例子的方式,从讨论C模板的通用目标和概念入手,继而介绍一些基本 阅读全文
posted @ 2020-08-04 17:03 失落孤舟 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 返回完整目录 2.5 类模板特化 Specializations of Class Templates 可以为特定的模板参数进行特例化。类似于重载函数模板,特化类模板可以优化特定类型的实现,或者修正类模板对特定类型实例化不正确的行为。然而,如果特化类模板需要特化所有的成员函数。尽管特化类模板的单一成 阅读全文
posted @ 2021-07-11 16:39 失落孤舟 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 返回完整目录 2.4 友元 Friends 除了使用printOn()方法来打印stack的内容,使用操作**<<将是更好的选择。然而,通常操作<<**都实现为非成员函数,这可以inline方式调用printOn()方法: template <typename T> class Stack { .. 阅读全文
posted @ 2020-09-15 00:19 失落孤舟 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 返回完整目录 2.3 类模板的局部使用 Partial Usage of Class Templates 类模板通常在它实例化的模板实参上进行多种操作(包括构造和析构),这给人一种印象:模板实参必须提供所有类模板的所有成员函数的所有操作。但是事实并非如此:模板实参仅需提供必要的操作而非可能需要的操作 阅读全文
posted @ 2020-09-14 22:38 失落孤舟 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 返回完整目录 2.2 使用Stack类模板 Use of Class Template Stack 在C++17以前,使用类模板必须显式指定模板实参1。以下例子展示如何使用类模板Stack<> // basics/stack1test.cpp #include "stack1.hpp" #inclu 阅读全文
posted @ 2020-09-01 22:33 失落孤舟 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 返回完整目录 2.1 类模板Stack的实现 Implementation of Class Template Stack 正如函数模板,可以如下方式在一个头文件中声明和定义类Stack<>: // basics/stack1.hpp #include <vector> #include <cass 阅读全文
posted @ 2020-08-20 21:57 失落孤舟 阅读(521) 评论(0) 推荐(0) 编辑
摘要: 返回完整目录 1.7 总结 Summary 函数模板定义了一系列不同模板实参的函数 当传递实参给依赖于模板参数的函数参数,函数模板推断模板参数并实例化相应的参数类型 可以显式限定前面模板参数(you can explicitly qualify the leading template parame 阅读全文
posted @ 2020-08-18 23:10 失落孤舟 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 返回完整目录 1.6 但是为什么不...? But, Should't We ...? 可能,甚至简单的函数模板可能引发进一步的疑问,这些疑问可能如此常见,所以在此简单地进行讨论。 1.6.1 传值还是传引用? Pass by Value or by Reference? 读者可能疑惑,为什么截止目 阅读全文
posted @ 2020-08-18 22:43 失落孤舟 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 返回完整目录 1.5 重载函数模板 Overloading Function Templates 和普通函数一样,函数模板也可以被重载,也就是说,同样的函数名可以有不同的函数定义。所以当一个名字被用作函数调用时,编译器必须确定从不同的候选者中决定调用哪一个。这个决策过程可以相当复杂,即使在没有模板的 阅读全文
posted @ 2020-08-18 21:36 失落孤舟 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 返回完整目录 1.4 默认模板实参 Default Template Arguments 可以为模板参数定义默认值,这些值被称为默认模板实参(default template arguments),并且可以用于任何类型的模板1 比如:当需要组合不同的方法来定义返回类型使其具有不同参数类型的能力(如前 阅读全文
posted @ 2020-08-09 23:32 失落孤舟 阅读(677) 评论(0) 推荐(0) 编辑
摘要: 返回完整目录 1.3 多模板参数 Multiple Template Parameters **函数模板(function template)**有两种类型的参数: 模板参数(Template Parameter):模板参数在尖括号里声明,在函数模板名字前面 template <typename T 阅读全文
posted @ 2020-08-09 14:45 失落孤舟 阅读(3449) 评论(0) 推荐(0) 编辑