dziedziczenie wirtualne

0

witam!
mam pytanie. posiadam taki o graf:)

http://img174.imageshack.us/my.php?image=sdflw3.png
zadanie polega na napisaniu kodu dziedziczenia wirtualnego i standardowego. Standardowe zrobilem.Proste
Teraz sa schody. Pytanie brzmi: czy do w kazdej klasie na liscie pochodzenia musze wpisywac slowo virtual??
Ja uwazam ze nie. bo przeciez wieloznacznosc zajdzie tylko w paru przypadkach.

class A
{};
///////////////////////////////////////////////////////////////
class B:public virtual A
{};
///////////////////////////////////////////////////////////////
class C:public virtual A
{};
///////////////////////////////////////////////////////////////
class D:public virtual B
{};
///////////////////////////////////////////////////////////////
class E:public B,public C
{};
///////////////////////////////////////////////////////////////
class F:public D
{};
///////////////////////////////////////////////////////////////
class G:public D 
{};
///////////////////////////////////////////////////////////////
class H:public virtual F
{};
///////////////////////////////////////////////////////////////
class I:public virtual F 
{};
///////////////////////////////////////////////////////////////
class J:public virtual E,public F
{};
///////////////////////////////////////////////////////////////
class K:public H,public I
{};
///////////////////////////////////////////////////////////////
class L:public I 
{};
///////////////////////////////////////////////////////////////
class M:public I,public C 
{};

czekam na wasze odpowiedzi:) dzieki za pomoc ;]
0

wielokrotnie dziedziczone beda klasy:
A (przez E oraz M)
B (przez J)
F (przez K)

tak wiec virtual musza byc minimum przy dziedziczeniach:
B : A
C : A
D : B
E : B //o tym zapomniales
H : F
I : F

wirtualnosc tych dziedziczen sama sie spropaguje do wyzej

wirtualnosc przy J : F nie jest potrzebna. po co? nic co dziedziczy po J nie ma szansy miec problemow z wielodziedziczeniem F'ki

0
quetzalcoatl napisał(a)

E : B //o tym zapomniales
dlaczego??

0

dlatego, ze:

J->E->B
J->F->D->B

czyli J dziedziczy B dwa razy. Jesli tak nie ma byc i ma to byc pojedyncze dziedziczenie, to E->B oraz D->B powinny byc dziedziczeniami wirtulnymi po B. Ale tylko JESLI. Pamietac nalezy, ze PODWOJNE dziedziczenie nie zawsze jest bledem i mozliwe jest ze tutaj akurat chcielibysmy zeby J 'zawieralo' dwa rozne obiekty B

0

dzieki wielkie....

beda moze ze mnie ludzie!:) nie wiele sie pomylilem:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1