好的-这可能是一个非常愚蠢的问题,但这一直困扰着我。

有没有一种语言

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。维基百科的文章非常好。可悲的是,它似乎仅通过大多数流行语言的语言扩展来支持,但是有几种(大多是深奥的)语言本身支持它。

10-07 18:13