- 博客(5)
- 收藏
- 关注
转载 effective c++ 48 了解模板元编程
effective c++ 48 了解模板元编程 template <int N> struct Factorial { enum { value = N * Factorial<N - 1>::value }; }; // 特化版本 template <> struct Factorial<0> { enum { value = 1 }; }; int main() {
2021-01-26 16:32:10
140
转载 effective c++ 47 请使用traits classes变现类信息
effective c++ 47 请使用traits classes变现类信息 首先我们要知道什么是traits,c++之父对其的解释为**当函数,类或者一些封装的通用算法中的某些部分会因为数据类型不同而导致处理或逻辑不同时,traits会是一种很好的解决方案。**举个例子: template <typename T> class Test { ...... }; 假设有这样的需求,类Test中的某部分处理会随着类型T的不同而会有所不同,比如希望判断T是
2021-01-26 16:08:41
150
转载 Effective_C++_条款四十五:运用成员函数模板接受所有兼容类型
Effective_C++_条款四十五:运用成员函数模板接受所有兼容类型 首先理解标题的含义 真实指针是支持隐式转换的,智能指针是行为像指针的对象,并且提供指针没有的机能。现在我们想如何编写智能指针的构造函数,使其行为能够满足我们的转型需求。因为一个template可以无限量具现化,所以我们无法写出我们需要的所有构造函数,我们解决问题的方法是不是为智能指针写一个构造函数,而是直接为其写一个构造模板。 template<typename T> class SmartPtr{ public:
2021-01-25 17:14:25
166
转载 effective c++条款44 将与参数无关的代码抽离templates
effective c++条款44 将与参数无关的代码抽离templates 首先了解这个条款的含义:使用template可能导致代码膨胀,二进制码会带着重复(或者几乎重复)的代码、数据,或两者。其结果有可能源码看起来合身而整齐,但目标码却不是这么回事。所以该条例用于我们解决 template带来的代码膨胀问题。 首先模板参数并不局限于类型,普通值也可以作为模板参数。 当要使用基于值的模板时,必须显示地指定这些值,才能对模板进行实例化,并获得最终代码。 标题中的参数可以指类型参数也可以指非类型参数 先看非类
2021-01-25 16:27:29
332
1
转载 effective c++条款43 学习处理模板化基类内的名称
effective c++条款43 学习处理模板化基类内的名称 首先为什么要处理模板化基类的名称呢? 举个例子 我们现在要设计一个程序,要传送信息到若干不同的公司去,信息要不译成密码,要不就是未加工的文字。我们在编译期间有足够的信息来决定哪一个信息传至哪一家公司。我们实现的方式有两种 一种是动态绑定,就是在使用运行期多态,定义子类重写两个函数,另一种就是使用静态多态。(编译期多态和运行期多态的差别,编译器多态是决定那个重载函数被调用的,也就是说编译器多态是一种静态多态,而运行期多态是一种动态绑定) log是
2021-01-25 15:29:49
164
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅