Das*_*aru 8 c++ polymorphism virtual operator-overloading
这两者有什么区别:
你什么时候用一个而不是另一个?
当您将Base类方法声明为virtual,为了覆盖它,您需要在Derived类中提供具有完全相同签名的函数(尽管允许使用Co-variant返回类型).
如果你的函数名是相同的,但是Derived类中的签名与Base类中的签名不同,那么它不再是overidding,它是函数Hiding,派生类方法隐藏了Base类方法.
函数重载永远不会跨类,您可以在同一个类或自由函数内重载方法,但不能跨类.当你尝试跨类时,你最终得到的是函数隐藏.
要将Base类方法引入Derived类的范围,您需要向Derived类添加一个
额外的方法using functionName.
编辑:
对于何时使用virtual重载的Q ,答案是:
如果您希望为运行时多态性重写类的函数,则应将它们标记为virtual,而不是如果您不打算这样.
好读:
何时将C++中的函数标记为虚拟?
| 归档时间: |
|
| 查看次数: |
7473 次 |
| 最近记录: |