C++ за 21 день седьмое издание



Download 1,38 Mb.
bet203/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   199   200   201   202   203   204   205   206   ...   437
Bog'liq
word1

};



14:



  1. class Mammal:public Animal




  1. {




  1. };



18:



  1. class Bird:public Animal




  1. {




  1. };



22:



  1. class Reptile:public Animal




  1. {

  2. };

26:



  1. class Platypus:public Mammal, public Bird, public Reptile




  1. {




  1. public:




  1. Platypus ()




  1. {




  1. cout « "Platypus constructor" « endl;




  1. }

  2. };



35:



  1. int main()




  1. {

  2. Platypus duckBilledP;








  1. // Снимите комментирий со следующей строки и получите отказ




  1. // компияции. Аде неоднозначен, поскольку есть три экземпляра // базового класса Animal

  2. // duckBilledP.Age = 25;



43:



  1. return 0;




  1. }



Результат


Animal constructor


Animal constructor


Animal constructor


Platypus constructor

Использование виртуального наследования для решения проблемы ромба

293



Анализ

Как демонстрирует вывод, благодаря множественному наследованию у всех трех базо­ вых классов класса P la ty p u s (происходящих, в свою очередь, от класса A nim al) есть свой экземпляр класса A nim al. Следовательно, для каждого экземпляра класса P la ty p u s , как показано в строке 38, автоматически создаются три экземпляра класса A nim al. Это про­ сто смешно, поскольку утконос — это одно животное, которое наследует определенные атрибуты классов Mammal, B ird и R e p tile . Проблема с количеством экземпляров базово­ го класса A nim al не ограничивается только излишним использованием памяти. У класса Animal есть целочисленный член A n im a l:: Age (который для демонстрации был оставлен открытым). При попытке получить доступ к переменной-члену A n im a l:: Age через экзем­ пляр класса P la ty p u s , как показано в строке 42, вы получаете ошибку компиляции, пото­ му что компилятор просто не знает, хотите ли вы установить значение переменной-члена Mammal: : A n im al: :Age, или B ir d : : A n im al: : Age, или R e p t i l e : : A n im a l: :Age. Как ни смешно, но при желании вы можете установить значения для всех трех:





Download 1,38 Mb.

Do'stlaringiz bilan baham:
1   ...   199   200   201   202   203   204   205   206   ...   437




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish