第十六章:模板与泛型编程

1:本章实例中,compare(const T &a,const T &b),在调用实例compare(“s”,”ss”)时编译出错,这是因为字面值”s”,”ss”的类型不一样,char * 的长度不一致导致;而如果是使用compare(const T a, const T b),则编译通过,因为这个赋值过程产生了string的构造函数调用而导致隐身的构造了string对象,从而可以。但是普通函数可以,因为它会对这个char * 进行转变(内部由此模块)

2:函数模板形参,先通过模板的实参依次匹配;再是根据函数实参进行匹配,这2个过程匹配完后如果依然有形参没有匹配上则会报错。

3:http://blog.csdn.net/lh844386434/article/details/6713361 网址详细介绍了模板编译模型问题:包含编译,分别编译;VS不支持分别编译器;包含是指头文件中包含了源文件,分别表示不包含,但是需要源文件中关键字export。另外包含编译也就意味着源文件不能多次被包含,因为会导致重编译。

4:关于友元声明,对于模板类型的必须前面有声明,而直接定义类的可以不需要前面声明。类模板中有3种友元声明:;分别是普通友元,一般模板友元,特定模板友元。

5:http://www.cppblog.com/SmartPtr/archive/2007/07/04/27496.html特化3种形式介绍。函数是不支持偏特化的,但是由于有模板函数重载效果,从而能够等效的偏特化效果:http://blog.chinaunix.net/uid-23141914-id-2941674.html

6:定义函数模板特化总比非模板版本好;当完全匹配时,非模板的级别要优先;最优特化的优于次优特化。

原文地址:https://www.cnblogs.com/miner007/p/4135814.html