Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»


}; class ostrich: public monstr, public hero{



Pdf көрінісі
бет203/465
Дата23.05.2022
өлшемі3.66 Mb.
#458577
түріПрограмма
1   ...   199   200   201   202   203   204   205   206   ...   465
pavlovskaia-jogargy-dengeili

};
class ostrich: public monstr, public hero{ 
...
};
int main(){ 
ostrich A;
cout << A.monstr::get_health(); 
cout << A.hero::get_health();
}
Мысалдан көрініп тұрғандай, 
get_health
əдісін шақыру үшін ол 
сипатталған класты нақты түрде көрсету керек. Класс əдісін шақырудың 
қарапайым 
A.get_health()
конструкциясын қолдану қателікке алып келеді, 
өйткені компилятор базалық кластардың қайсы əдісін пайдалану керек екенін 
түсіне алмайды.
15-1140


226
Егер базалық кластардың ортақ ата-тегі бар болса, онда осы базалық 
кластардан туындайтын класс ата-тегі өрістерінің екі данасын (экземплярын) 
мұралайды, бұлай болғаны жақсы емес. Мұндай жағдайдың алдын алу үшін 
ортақ ата-тегінен мұралау кезінде оны виртуалды класс ретінде анықтау керек:
class monstr{ 
...
};
class daemon: virtual public monstr{ 
...
};
class lady: virtual public monstr{ 
...
};
class baby: public daemon, public lady{ 
...
};
baby
класында 
monstr
класы өрістерінің бір ғана данасы (экземпля-
ры) болады. Егер базалық класс виртуалды түрде де, қарапайым түрде де 
мұраланатын болса, онда туынды класта əрбір виртуалды емес нұсқа үшін 
жеке даналар жəне виртуалды нұсқа үшін тағы бір дана кездеседі. 
Көптік мұралау туынды класты екі немесе одан көп базалық кластардың 
қасиеттерімен қамтамасыз ету үшін қолданылады. Көбінесе осы кластардың 
біреуі негізгі болып табылады, ал қалғандары кейбір қосымша қасиеттермен 
қамтамасыз етеді, сондықтан олар араластыру кластары деп аталады. 
Араластыру кластары мүмкіндігінше виртуалды болуы тиіс жəне параметрсіз 
конструкторлар көмегімен құрылуы керек, сонда ромб түріндегі мұралау 
(базалық кластардың ортақ ата-тегі болатын жағдай) кезінде туындайтын 
көптеген қиындықтарды жеңуге мүмкіндік береді.


Достарыңызбен бөлісу:
1   ...   199   200   201   202   203   204   205   206   ...   465




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет