() ( ), . , , . A B B C, B C, A - C (. 8.2). , A B C, ::, ::. A.
. 8.2.
(), " ". . . , .. , ,
class X1 {};
class X2 {};
class X3 {};
class Y1: public X1, public X2, public X3 {};
. . :
class X{ public: int a; int 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 : ::::f() Z::X::f(), .
Heir . Square ClsEllipse. Square ClsEllipse Figura. Heir .
Figura Figura
Square ClsEllipse
Heir
Heir Figura. , Heir Figura , , Heir::Square::Figura::display(), Heir::ClsEllipse::Figura::display().
|
|
, . virtual. , :
class X { public: int a; int f();};
class Y: virtual public X{};
class Z: virtual public X{};
class D: public Y, public Z{};
D X, 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{};
A X: , B, Y, C, Z, D E. , , , .
, :
class {};
class : virtual public {};
class CC: virtual public {};
class DD: public AA, public CC, virtual public BB{};
:
. - . , . :
class X { public: int d; };
class Y { public: int d; };
class Z: public X, public Y {
public:
int d;
void f(){d - X::d + Y::d;}
};