条款41:了解隐式接口以及编译期多态

条款41:了解隐式接口以及编译期多态

相对于继承体系来说,template实际上也使用接口与多态,而继承体系往往使用到的是显式接口以及运行期多态,而template实际上用的是隐式接口以及编译期多态。

 
隐式接口实际上就是类似下面这样的东西:
1 template <class T>
2 int myTypes(T & tmp)
3 {
4     tmp.size();
5     ....
6 }
这里的size相当于这里的隐式接口。
小结:
1. class以及template都支持接口以及多态
2. 对class而言接口是显示的接口以函数签名为中心,多态是通过virtual函数发生在运行期间
3. 对于template而言,接口是隐式的,一般基于有效表达式。多态是通过template具象化和函数重载解析而发生在编译期间