Хорошо - это может быть очень глупый вопрос, но это меня беспокоило.
Есть ли язык, на котором
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"
? (пожалуйста, не стесняйтесь использовать синтаксис С++)
Чтобы уточнить, я хочу "функцию, которая принимает аргумент и действует на него в соответствии с типом аргумента".
И это имело бы смысл? Конечно, как разработчик вам нужно будет заботиться, потому что экземпляры, которые выглядят так же, как указатель Animal, могут на самом деле вызывать код Ape, потому что во время выполнения он указывает на экземпляр Ape.