2. Көпше түрдегі мұрагерлік
С++ тағы туынды класс базалық кластың кез–келген санынан туындауы мүмкін. Туынды кластың құрамында бірден көп базалық кластың болуы көпше түрдегі мұрагерлік деп атайды. Синтаксистік көпше түрдегі мұрагерлік жекеше түрдегі мұрагерліктен бірнеше элементтен тұратын база тізімен ерекшеленеді.
Class A
{
};
Class B
{
};
Class C: public A, public B
{
};
Туынды кластың таныстырушы – объектісін қалыптастырғанда, база тізіміндегі базалық кластардың орналасу қалпы (умолчания) конструкторларының шақыруының кезеңімен анықталады.
Бұл қалпы осы объектілерді жою кезінде деструкторлардың шақыруы кезегіне де септігін тигізеді. Бірақ бұл мәселелер алгоритм секілді базалық объектілерге бөлінген памяттер және де бұл релизация сұрағына қатысты болып табылады. Әдетте программист бұған арнайы көңіл бөлмеуі мүмкін.
Шектеу орналғандықтан туынды кластарды хабарлауда база тізіміне бірдей атаудағы класс бірнеше рет кіре алмайды. Бұл, туынды класты қалыптастырғанда қатысқан қайталанатын элементтер базалық кластарды қабылдаған кезде кездеспеуі керек дегенді білдіреді.
Сонымен бірге, бірдей класс белгіленген туынды кластағы бірнеше базалық кластарды қалыптастырғанда қатыса алады. Сондықтан туынды класты қалыптастырғанда қатысқан тура емес базалық кластарға туынды кластың хабарламасына кіру санына еш шектеу қойылмайды.
class A
{
public:
int x0,xA;
};
class B: public A
{
public:
int xB;
};
class C:public A
{
public:
int x0,xC;
};
class D:public B, public C
{
public:
int x0,xD;
};
Бұл мысалда А мен Д класын хабарлауда екі рет тура емес базалық класс ретінде қолданылады.
Туынды кластың құрылымын таныстарғанда ацикличестік графалар, кластар мен объектілердің сызба нұсқасы қолданылады.
Бұрындағы секілді туынды класта көрсетіп бағытталған, ацикличестік графаның ең төменгі бөлігі, сызба нұсқаның төменгі деңгейімен туынды класс пен объект фрагментінен сәйкес келеді.
Біз бұндай объекті фрагменттін белгіленген кластың туынды таныстырушы – фрагменті деп атаймыз.
Графаның жоғарғы бөлігі, сызба нұсқаның жоғарғы деңгейі базалық класс пен объект фрагментіне сәйкес келеді.
Біз бұндай объекттін фрагментін кластың базалық таныстырушы базалық фрагменті деп атаймыз.
Достарыңызбен бөлісу: |