功能参数的多态性

msi*_*msi 11 c++ oop polymorphism language-design

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

有语言吗?

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);
Run Code Online (Sandbox Code Playgroud)

会屈服"doing ape stuff"吗?(请使用C++语法来支持我)为了澄清,我想要"一个接受参数的函数,并根据参数的类型对其进行操作".

它会有意义吗?当然,作为开发人员,您需要注意,因为看起来像Animal指针的实例实际上可能会调用Ape代码,因为在运行时它是指向的Ape实例.

Ste*_*ker 7

是的,有!这称为多次调度.维基百科的文章非常好.可悲的是,它似乎只能通过大多数流行语言的语言扩展来支持,但有一些(主要是深奥的)语言本身支持它.