类型萃取:
类型萃取是在模板的基础上区分内置类型和其他类型,主要原理是将内置类型全部特化,然后再进行区分。通过区分内置类型和非内置类型,我们可以提高程序的执行效率。比如对于内置类型我们在拷贝的时候就可以使用memmove和memcopy进行拷贝。
泛型编程:
泛型编程就是编写与类型无关的路基代码,是一种代码复用的方式。当我们编写一个泛型编程时,是独立于任何特定类型来编写代码的。当我们使用一个泛型编程的时候,我们提供类型或值,程序就可以在其上运行。
模板:
模板就是C++中泛型编程的基础,一个模板就是一个创建类或者函数的蓝图,当我们在编译时,编译器会自动进行模板推演,将这个蓝图转换成特定的函数或者类。应为在C/C++中是个单源文件进行编译的,所以模板不能直接分离编译。这时我们可以将模板的什么和实现放到一起,组成一个hpp文件。模板复用了代码,增强了代码的灵活性,C++的标准模板库里面就使用了大量的模板。但是模板让代码边的凌乱复杂,不易维护,编译代码时间变长。