如果我有C ++函数/方法,例如:
getSound(Animal a){
a.printSound();
}
然后向它传递一个
Dog
对象,该对象扩展了类Animal
但重写了Animal的printSound()
方法,是否可以在printSound()
中使用Dog的getSound()
?我曾尝试在
printSound()
类定义中将Animal
设为虚拟,但是我仍在获取原始printSound()
的输出。提前致谢。
最佳答案
使printSound
虚拟是正确的。更改getSound
的签名以采用Animal&
或const Animal&
。通过按值获取Animal
,您可以从Animal
构造新的Dog
,而这只是Animal
,而不是Dog
。
关于c++ - C++作为父类(super class)传递后使用重写的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12028250/