【发布时间】:2013-07-10 04:22:05
【问题描述】:
我们可以通过 const 函数实现多态吗? 我的意思是一个函数 a() 和另一个函数 a()const 的行为是多态的吗?
void func(int a){}
void func(int a)const {}
【问题讨论】:
-
不,它们必须具有相同的签名。
-
这取决于你所说的多态性。重载或Ad hoc polymorphism 是一种多态性。然而,当人们谈论 C++ 中的多态性时,他们通常指的是通过虚函数(也称为 subtype polymorphism)进行动态调度,但事实并非如此。
-
我认为你需要解释一下你所说的多态是什么意思,因为答案可能是任何一种方式。
-
对于多态性需要是虚拟的。您可以使用 C++11 中的 override 关键字检查是否是这种情况
-
@JustinMeiners 对于 virtual 或运行时多态性需要是虚拟的。但是还有更多类型的多态性。函数重载为多态提供了另一种方式。
标签: c++ polymorphism