相对于继承体系来说,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具象化和函数重载解析而发生在编译期间