Хорошо - это может быть очень глупый вопрос, но он беспокоит меня.
Есть ли язык где
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, на который указывают.