.
. , 2- . . .
class X1 {... };
class X2 {... };
class X3 {... };
class Y1: public X1, public X2, public X3 {... };
.
. . :
class X {...;
f ();
...
};
class Y:
public X {... };
class Z:
public X {... };
class D:
public Y, public Z {... };
D.
. , D , : D::Y::X::f() D::Z::X::f(). D Y::X::f() Z::X::f(), .
, . virtual. , :
class X {...
f();
...
};
class Y:
virtual public X {... };
class Z:
virtual public X {... };
class D:
public Y, public Z {... };
D , Y Z.
, . < > .
, , .
class X {... };
class Y:
virtual public X {... };
class Z:
virtual public X {... };
class B:
virtual public X {... };
class C:
virtual public X {... };
class E:
public X {... };
class D:
public X {... };
class A:
public D, public B, public Y, public Z, public C, public E {... };
: , B, Y, C, Z, D E. , , , .
|
|
. :
class BB {... };
class AA:
virtual public BB {... };
class CC:
virtual public BB {... };
class DD: public AA, public CC, public virtual BB {... };
. - . , . :
class X { public: int d;... };
class Y { public: int d;... };
class Z: public X, public Y,
{
public:
int d;...d=X::d + Y::d;...
};
, . , TeddyBear ( ) : ToyAnimal ( ) ZooAnimal, Bear:
class Character {... }; // class BookCharacter: public Character {... }; // class ToyAnimal {... }; // class TeddyBear: public BookCharacter, public Bear, public virtual ToyAnimal {... };. 18.5, , .
. 18.5. TeddyBear
. BookCharacter, Bear ToyAnimal. , .. . , BookCharacter Character, BookCharacter. Bear ZooAnimal, Bear.
TeddyBear : ZooAnimal, ToyAnimal.
, , : BookCharacter, Bear. BookCharacter Character.
:
TeddyBear Paddington;:
ZooAnimal(); // Bear ToyAnimal(); // Character(); // BookCharacter BookCharacter(); // Bear(); // TeddyBear(); //ZooAnimal ToyAnimal TeddyBear Paddington.
( ) . , , .