C++ 模板加强
编译器多态
要点: 隐式接口和编译期多态.
void doPro(T & w){
if(w.size()>0 && w != DefaultW) {
T temp(w);
temp.init();
w.swap(temp)
}
}
要点: T 要支持什么? size,>, !=,copy constructor,init,swap..
然而不是要求模板 T 一定显示
要有上面的接口,只要编译表达式的规则,就能通过编译:
size()可以来自T的父类;
size()返回int; >自然成立;(满足操作符重载,下同)
size()返回任意对象X, X重载了>;
size()返回任意对象Y, Y没有重载>,但是Y可以隐式转换为X;
同理, != 操作符右边的DefaulW可以是任意对象,只要对应的操作符实现了;
以上是模板的隐式接口
的含义.
显然不同模板完全导致不同的具体实现,这是模板的编译多态
.
关于嵌套从属名称