1)非参数化多态(Ad-hoc polymorphism):
a)函数重载(Function Overloading)
b)运算符重载(Operator Overloading)
2)参数化多态(Parametric polymorphism)
c)模板(Template)
其实非参数化多态和参数化多态并不冲突,而且相辅相成,它们混合使用能够带来更大的灵活性,函数模板重载就是很好的例子:
template
T max(const T& lhs, const T& rhs)
{
return lhs > rhs "para" label-module="para">
}
template
T max(const T& fst, const T& sec, const T& thd)
{
return max(max(fst, sec), thd);
}
使用:
max(1, 3, 5);
max(2.4, 4.2);