Mam straaaaszny problem. Polega on (to zabawne ale tak jest niestety) na tym że chyba kompilator przepuszcza mi kardynalny błąd ale… program działa i to świetnie. O.O
Chodzi o polimorfizm nazw funkcji. Zasada jest podobno taka, że jeśli stosujemy tą samą nazwę funkcji, musi ona być tego samego typu - tak przynajmniej pisali w moim podręczniku… Niedawno sobie przypomniałem że biblioteczka którą piszę nie powinna wcale działać! Jedna funkcja jest typu wskaźnikowego a druga void.
To nie jest polimorfizm, to jest przeciążanie funkcji.
W C++ może istnieć wiele funkcji o takiej samej nazwie, ale muszą się dać jednoznacznie zidentyfikować przez parametry. Tutaj obie funkcje przyjmują różne parametry, więc wszystko jest prawidłowo.
Polimorfizm jest wtedy, gdy klasa posiada funkcje wirtualne, a klasa dziedzicząca je nadpisuje.
Forma polimorfizmu, której przykład zamieściłeś nazywa się przeciążaniem funkcji (function overloading) - można mieć wiele funkcji o tej samej nazwie przyjmujące różne parametry - więc jest to sytuacja zupełnie odwrotna niż " że jeśli stosujemy tą samą nazwę funkcji, musi ona być tego samego typu". Nie miałoby to sensu, nie można mieć dwóch funkcji o takich samych nazwach i parametrach.
Natomiast polimorfizm oparty na metodach w klasach i dziedziczeniu (subtype polymorphism) wymaga aby typy metod były takie same (z pewnymi wyjątkami) - jednak metody te istnieją w różnych klasach. Wspomniany przez Ciebie fragment książki być może opisuje właśnie tę sytuację.