class Cats { public: virtual void Meow() = 0; }; class Cat : public Cats { public: void Meow() { cout << "meow!\n"; } }; class Tiger : public Cats { public: void Meow() { cout << "mreowww!\n"; } }; int main() { Cats* cat1 = new Cat(); Cats* cat2 = new Tiger(); Cats* cat3 = new Cat(); Cats* cat4 = new Tiger(); Cats* mas[] = { cat1, cat2, cat3, cat4 }; for (int i = 0; i < 4; i++) { mas[i]->Meow(); } } // cat1 = new Tiger(); - можна змінити // void Meow() override - можна вказати // virtual void Meow(){ }; // dynamic_cast<Tiger*>(cat2)->доступ
meow!
mreowww!
meow!
mreowww!
Спеціалізований поліморфізм (поліморфізм функцій) int Sum(int a, int b) { return a + b; } int Sum(int a, int b, int c) { return a + b + c; } int main() { cout << Sum(1, 2) << endl; cout << Sum(1, 2, 4) << endl; }