假设我们有一个类,"动物"和子类,"猫"和"狗".
让我们说当我们将对象传递给任何"动物"的中间函数时,我们想让"猫"和"狗"都发出声音(猫:"喵" - 狗:"woof").
为什么我们必须使用虚拟方法来执行此操作?难道我们不能在没有在"动物"中定义虚拟方法的情况下执行Animal-> makeNoise()吗?由于"猫"和"狗"都是动物,难道不清楚"makeNoise()"是指传递给函数的动物吗?
这仅仅是语法问题还是更多内容?我很确定在Java中我们不必这样做.
Bar*_*rry 10
在Java中,所有成员函数都是virtual在默认情况下(除了static,private和final的).
在C++中,virtual默认情况下所有成员函数都是非成员函数.使函数virtual增加了开销 - 运行时和对象大小 - 并且C++哲学不支付您不使用的内容.我的大多数对象都不是多态的,所以除非我需要,否则我不应该为多态而付费.既然你需要Animal::makeNoise()是virtual,必须明确指定它是这样.
| 归档时间: |
|
| 查看次数: |
170 次 |
| 最近记录: |