根据参数化多态性的维基百科页面:
问题:C++为什么被认为只实现了类似于参数化多态性的东西?特别是,难道模板不是完全的参数化多态性的例子吗?某些类型多态性的实现与参数多态性表面上相似,同时也引入了特定方面。其中一个例子是C++模板专业化。
问题:C++为什么被认为只实现了类似于参数化多态性的东西?特别是,难道模板不是完全的参数化多态性的例子吗?某些类型多态性的实现与参数多态性表面上相似,同时也引入了特定方面。其中一个例子是C++模板专业化。
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
int i = add(2, 3);
double d = add(2.7, 3.8);
return i + (int)d;
}
int add(int a, int b) { return a + b; }
和double add(double a, double b) { return a + b; }
一个函数仅处理整数,另一个函数仅处理双精度浮点数,没有多态性。这在现实中意味着什么?
但不要把这理解为C++不够强大或C#更加强大。这只是许多语言特性中的一个细节。