好的-这可能是一个非常愚蠢的问题,但这一直困扰着我。
有没有一种语言
class Animal;
class Ape : public Animal
{...}
void doStuff(Animal* animalPtr)
{
cout << "doing animal stuff" << endl;
}
void doStuff(Ape* apePtr)
{
cout << "doing ape stuff" << endl;
}
Animal *ape = new Ape();
doStuff(ape);
会产生
"doing ape stuff"
吗? (请耐心使用C++语法)为了明确起见,我想要“一个接受参数并根据参数类型对其执行操作的函数”。
这有道理吗?当然,作为开发人员,您需要格外小心,因为看起来像Animal指针的实例实际上可能会调用Ape代码,因为在运行时,它指向的是Ape实例。
最佳答案
是的,有!这称为multiple dispatch。维基百科的文章非常好。可悲的是,它似乎仅通过大多数流行语言的语言扩展来支持,但是有几种(大多是深奥的)语言本身支持它。