author:
- luixiao1223
title: 了解隐式接口和编译期多态
多态的实现方法
- 运行时多态 虚函数(virtual)
- 编译期多态 template
显式接口和隐式接口
显示接口
void doProcessing(Widget& w)
{
if(w.size()>10 && w!=someNastyWidget){
Widget temp(w);
temp.normalize();
temp.swap(w);
}
}
对于函数的参数而言,必须使用Widget的类型或者派生类。那么它的接口是显示的。可以查看文件
Widget
隐式接口
template<typename T> void doProcessing(T& w) {
if (w.size() > 10 && w != someNastyWidget) {
T temp(w);
temp.normalize( );
temp.swap(w);
}
}
多有类型只要实现函数内的基本操作都行。这是一种隐式的要求。