Множественная диспетчеризация – что это такое
Автор
using namespace std;
#include <string>
#include <iostream>
#include <iostream>
class Pet{
public:
string name;
};
string meets( Pet a, Pet b ) {return "GENERIC"; }
void encounter( Pet a, Pet b ){
string verb = meets( a, b );
cout << a.name << " встречает " << b.name << " и " << verb << endl;
}
class Dog : public Pet {};
class Cat : public Pet {};
string meets( Dog a, Dog b ) { return "обнюхивает"; }
string meets( Dog a, Cat b ) { return "прогоняет"; }
string meets( Cat a, Dog b ) { return "шипит"; }
string meets( Cat a, Cat b ) { return "подкрадывается"; }
int main() {
Dog fido; fido.name = "Fido";
Dog rex; rex.name = "Rex";
Cat whiskers; whiskers.name = "Whiskers";
Cat spots; spots.name = "Spots";
encounter( fido, rex );
encounter( fido, whiskers);
encounter( whiskers, rex );
encounter( whiskers, spots );
return 0;
}