Witam. Mam pytanie odnośnie dziedziczenia. Przykładowy kod:
class A
{
public:
virtual int fun1()=0;
virtual int fun2()
{
return 1;
}
virtual int fun2()
{
return 2;
}
}
class B:public A
{
public:
virtual int fun1()
{
return 90;
}
virtual int fun2()
{
return 34;
}
}
class C:public A
{
public:
virtual int fun1()
{
return 120;
}
virtual int fun3()
{
return 56;
}
}
Moje pytanie jest takie: Klasa A jest klasą abstrakcyjną. Wiadomo, że jeżeli chcemy, aby klasy B i C były nieabstrakcyjne to musimy zdefiniować ciało metody fun1.
Przykład jest czysto dydaktyczny, więc może być nie za bardzo zrozumiały, ale postaram się opisać o co mi chodzi.
Załóżmy, że funkcja fun2 jest metodą, która ma sens tylko dla klasy B , a metoda fun3 ma sens tylko dla klasy C.
Czy można po prostu wpakować wszystkie metody do klasy bazowej (abstrakcyjnej), ciała tych funkcji zostawić puste ( {} ) i je odpowiednią zdefiniować dla klas potomnych, dla których mają sens ?
Proszę o jasną odpowiedz!