Cześć,
zerknijcie proszę na ten kod:
#include <iostream>
#include <string>
class Wojsko {
public:
Wojsko(void);
~Wojsko(void);
bool Atakuj(void);
};
Wojsko::Wojsko(void) {
}
Wojsko::~Wojsko(void) {
}
bool Wojsko::Atakuj(void) {
std::cout << "Przeprowadzam atak!" << std::endl;
return true;
}
class Snajper : public Wojsko {
public:
Snajper(void);
~Snajper(void);
bool Atakuj(void);
};
Snajper::Snajper(void) {
}
Snajper::~Snajper(void) {
}
bool Snajper::Atakuj(void) {
std::cout << "Celuje z ukrycia i strzelam!" << std::endl;
return true;
}
void main(void) {
Wojsko Czolg = Wojsko();
Czolg.Atakuj();
Snajper Wincent = Snajper();
Wincent.Atakuj();
system("PAUSE");
}
Według mojej książki jeśli w klasie potomnej pojawi się metoda o takiej samej nazwie jak w bazowej to kompilator zwróci błąd dlatego też istnieje coś takiego jak metody wirtualne, ale jak widzę w swoim przykładzie kompilator błędu nie zwraca, dlaczego? Z góry dzięki za pomoc.