在学 C++ 的时候我总认为 重载 和 上溯造型 (即 Base b = new Inh(),其中 Inh 类继承 Base 类) 都是多态性。因为你看重载的时候有好多个同名函数,只是参数列表的不同就能展现出不同的功能形态来,而上溯造型的时候,不同子类中的覆盖函数功能形态也不一样,最后调用的结果也不同。这不就是多态的含义吗?
非也。我们都知道 C++ 里面重载函数实际上在编译的时候先变成 参数类型1_参数类型2_…_函数名 也就是说在编译的时候就能明白这应该调用哪一个函数,虽然说重载函数是同名的,但在编译器看来它们其实都是不同名,也即是不同的函数。那么不同的函数表现出不同的功能形态来也就不足为奇了。