Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Освой ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π‘++ Π·Π° 21 дСнь.Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 66

Автор ДТСсс Π›ΠΈΠ±Π΅Ρ€Ρ‚ΠΈ

9. Π”опускаСтся Π»ΠΈ Π² C++ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° operator++ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ выполнял Π² классС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°?

10. ΠšΠ°ΠΊ устанавливаСтся Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² прСобразования Ρ‚ΠΈΠΏΠΎΠ²?

УпраТнСния

1. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ объявлСниС класса SimpleCircle с СдинствСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½ΠΎΠΉ-Ρ‡Π»Π΅Π½ΠΎΠΌ itsRadius. Π’ классС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ конструктор ΠΈ дСструктор, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ установки радиуса.

2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ класс, созданный Π² ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΈ 1, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструктора, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ itsRadius Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 5.

3. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² класс Π½ΠΎΠ²Ρ‹ΠΉ конструктор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ присваиваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ своСго ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ itsRadius.

4. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€Π΅ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΈ постинкрСмСнта для использования Π² вашСм классС SimpleCircle с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ itsRadius.

5. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ SimpleCircle Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ itsRadius Π² динамичСской области памяти ΠΈ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

6. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π² классС SimpleCircle конструктор-ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ.

7. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π² классС SimpleCircle ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания.

8. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая создаСт Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса SimpleCircle. Для создания ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ конструктор, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ экзСмпляру ΠΏΡ€ΠΈ объявлСнии присвойтС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 9. Π‘ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΈ Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ значСния Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ. НаконСц, присвойтС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈ Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ.

9. Π–ΡƒΡ‡ΠΊΠΈ: Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания?

SQUARE SQUARE::operator=(const SQARE & rhs)

{

   itsSide = new int;

   *itsSide = rgs.GetSide();

   return << this;

}

10. Π–ΡƒΡ‡ΠΊΠΈ: Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° суммирования?

VeryShort VeryShort::operator+ (const VeryShort& rhs)

{

   itsval += rhs.GetItsVal();

   return *this;

}

Π”Π΅Π½ΡŒ 11-ΠΉ. НаслСдованиС

 Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ основой чСловСчСского ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ являСтся поиск, выявлСниС ΠΈ построСниС Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ концСпциями. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚ΠΈΡ‡ΡŒ хитросплСтСния ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‰Π°ΠΌΠΈ ΠΈ явлСниями, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ иСрархичСскиС построСния, ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, сСти ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ срСдства Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ ΡΡƒΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Π² C++ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ иСрархичСская систСма наслСдования. БСгодня Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅:

β€’ Π§Ρ‚ΠΎ прСдставляСт собой наслСдованиС

β€’ ΠšΠ°ΠΊ произвСсти ΠΎΠ΄ΠΈΠ½ класс ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ

β€’ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ доступ ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

β€’ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ наслСдованиС

 Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ собака? Π§Ρ‚ΠΎ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠΎΠ³Π΄Π° смотритС Π½Π° своСго ΠΏΠΈΡ‚ΠΎΠΌΡ†Π°? Π― Π²ΠΈΠΆΡƒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π»Π°ΠΏΡ‹, ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Π·ΡƒΠ±Π°ΡΡ‚ΡƒΡŽ ΠΏΠ°ΡΡ‚ΡŒ. Π‘ΠΈΠΎΠ»ΠΎΠ³ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ систСму Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΡ€Π³Π°Π½ΠΎΠ², Ρ„ΠΈΠ·ΠΈΠΊ β€” ΡΡ‚Ρ€ΠΎΠΉΠ½ΡƒΡŽ систСму Π°Ρ‚ΠΎΠΌΠΎΠ² ΠΈ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² энСргии, Π° ΡƒΡ‡Π΅Π½Ρ‹ΠΉ, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉΡΡ систСматикой ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ…, β€” Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠ³ΠΎ прСдставитСля Π²ΠΈΠ΄Π° Canis familiaris.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ смотрит Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ со своСй Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, Π½ΠΎ сСгодня нас Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ послСднСС ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: собака являСтся прСдставитСлСм сСмСйства Π²ΠΎΠ»Ρ‡ΡŒΠΈΡ…, класса ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΈ Ρ‚.Π΄. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния систСматики любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΆΠΈΠ²ΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ рассматриваСтся Π² ΠΏΠ»Π°Π½Π΅ принадлСТности ΠΎΠ΄Π½ΠΎΠΉ систСмС иСрархичСских таксонов: царству, Ρ‚ΠΈΠΏΡƒ, классу, отряду, сСмСйству, Ρ€ΠΎΠ΄Ρƒ ΠΈ Π²ΠΈΠ΄Ρƒ.

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ прСдставляСт собой Π²ΠΈΠ΄ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ подчинСнности Ρ‚ΠΈΠΏΠ° принадлСТности частного ΠΎΠ±Ρ‰Π΅ΠΌΡƒ. Π’Π°ΠΊ, Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ являСтся Π²ΠΈΠ΄ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ°Ρ‚ΠΎΠ². ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ. Π“Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊ являСтся Π²ΠΈΠ΄ΠΎΠΌ машин, Π° машина, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, являСтся Π²ΠΈΠ΄ΠΎΠΌ транспортных срСдств. ΠŸΠΈΡ€ΠΎΠΆΠ½ΠΎΠ΅ являСтся Π²ΠΈΠ΄ΠΎΠΌ сладких блюд, Π° сладкиС блюда ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΠΈΠ΄ΠΎΠΌ ΠΏΠΈΡ‰ΠΈ.

Когда ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‡Ρ‚ΠΎ являСтся Π²ΠΈΠ΄ΠΎΠΌ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ, Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ объявлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊ, отмСчая, Ρ‡Ρ‚ΠΎ машина β€” это Π²ΠΈΠ΄ транспортных срСдств, ΠΌΡ‹ ΠΈΠ· всСвозмоТных срСдств пСрСдвиТСния (ΠΎΡ‚ ΠΏΠΎΠ²ΠΎΠ·ΠΊΠΈ Π΄ΠΎ самолСта) Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ чСтырСхколСсныС устройства с Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»Π΅ΠΌ.

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ ΠΈ наслСдованиС

 Π“оворя ΠΎ собакС, ΠΊΠ°ΠΊ прСдставитСлС класса ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ…, ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° наслСдуСт всС ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ, ΠΎΠ±Ρ‰ΠΈΠ΅ для класса ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ…. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ собака β€” ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡ‚Π°ΡŽΡ‰Π΅Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ…, Π΄Ρ‹ΡˆΠ°Ρ‰ΠΈΡ… Π²ΠΎΠ·Π΄ΡƒΡ…ΠΎΠΌ. ВсС ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Π΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ ΠΈ Π΄Ρ‹ΡˆΠ°Ρ‚ Π²ΠΎΠ·Π΄ΡƒΡ…ΠΎΠΌ. Если ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊ собаку, это Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ ΠΊ объявлСнию ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π²ΠΈΠ»ΡΡ‚ΡŒ хвостом, Π³Ρ€Ρ‹Π·Ρ‚ΡŒ Ρ€ΡƒΠΊΠΎΠΏΠΈΡΡŒ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я ΠΊΠ°ΠΊ Ρ€Π°Π· собрался нСсти Π² Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΡŽ, Π±Π΅Π³Π°Ρ‚ΡŒ ΠΏΠΎ Π΄ΠΎΠΌΡƒ ΠΈ Π»Π°ΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° я сплю... ΠΎ ΠΈΠ·Π²ΠΈΠ½ΠΈΡ‚Π΅, ΠΊΡƒΠ΄Π° мСня занСсло! Ну Ρ‚Π°ΠΊ Π²ΠΎΡ‚, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ.

Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, собак ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° слуТСбных, спортивных ΠΈ ΠΎΡ…ΠΎΡ‚Π½ΠΈΡ‡ΡŒΠΈΡ…. ΠŸΠΎΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΡ‚ΠΈ дальшС ΠΈ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΡ€ΠΎΠ΄Ρƒ собаки: спаниСль, Π»Π°Π±Ρ€Π°Π΄ΠΎΡ€ ΠΈ Ρ‚.Π΄.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ Ρ„ΠΎΠΊΡΡ‚Π΅Ρ€ΡŒΠ΅Ρ€ β€” это ΠΏΠΎΡ€ΠΎΠ΄Π° ΠΎΡ…ΠΎΡ‚Π½ΠΈΡ‡ΡŒΠΈΡ… собак, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ прСдставлСны всС ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ, ΠΎΠ±Ρ‰ΠΈΠ΅ для собак Π²ΠΎΠΎΠ±Ρ‰Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ всС ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ, ΠΎΠ±Ρ‰ΠΈΠ΅ для ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΈ Ρ‚.Π΄., Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ всСх таксонов, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ относится Ρ„ΠΎΠΊΡΡ‚Π΅Ρ€ΡŒΠ΅Ρ€. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 11.1, Π³Π΄Π΅ стрСлками связаны ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня с катСгориям ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ порядка.



Рис. 11.1. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ…

Π’ C++ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ классов, Π³Π΄Π΅ ΠΎΠ΄ΠΈΠ½ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ, ΠΈΠ»ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ класса Π±ΠΎΠ»Π΅Π΅ высокого уровня. Π’ наслСдовании классов Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈΡ… иСрархичСской подчинСнности. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ класс Dog (Π‘ΠΎΠ±Π°ΠΊΠ°) ΠΎΡ‚ класса Mammal (ΠœΠ»Π΅ΠΊΠΎΠΏΠΈΡ‚Π°ΡŽΡ‰Π΅Π΅). Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, класс Mammal являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для класса Dog. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ описаниС Π²ΠΈΠ΄Π° собака нСсСт Π² сСбС ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ, Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ описаниС ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² Ρ†Π΅Π»ΠΎΠΌ, Ρ‚Π°ΠΊ ΠΈ класс Dog содСрТит ряд ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдставлСны Π² классС Mammal.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом связано нСсколько ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ собаки, кошки ΠΈ лошади ΡΠ²Π»ΡΡŽΡ‚ΡΡ прСдставитСлями ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ…, Ρ‚ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния C++ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС эти классы ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Ρ‹ ΠΎΡ‚ класса Mammal.

Царство ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ…

Π§Ρ‚ΠΎΠ±Ρ‹ Π±ΠΎΠ»Π΅Π΅ наглядно Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ смысл наслСдования классов, рассмотрим эту Ρ‚Π΅ΠΌΡƒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ многочислСнными прСдставитСлями ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ сСбС, Ρ‡Ρ‚ΠΎ программисту, поступил Π·Π°ΠΊΠ°Π· Π½Π° созданиС дСтской ΠΈΠ³Ρ€Ρ‹ " Π€Π΅Ρ€ΠΌΠ°" .

Когда Π²Ρ‹ приступитС ΠΊ созданию ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ…, ΠΎΠ±ΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° Ρ„Π΅Ρ€ΠΌΠ΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ лошадСй, ΠΊΠΎΡ€ΠΎΠ², собак, кошСк, ΠΎΠ²Π΅Ρ† ΠΈ Ρ‚.Π΄., Π²Π°ΠΌ потрСбуСтся ΡΠ½Π°Π±Π΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΡ… класс Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, благодаря ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ΠΈ смогут вСсти сСбя Π½Π° экранС Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ этого ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Ρ€Π΅Π±Π΅Π½ΠΎΠΊ. Но Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ снабТСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ общая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования, ΠΊΠΎΠ³Π΄Π° сначала выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π°Π±ΠΎΡ€Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π° Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡ… откладываСтся Π½Π° ΠΏΠΎΡ‚ΠΎΠΌ. Π’Ρ‹ Π²ΠΏΡ€Π°Π²Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² этой Π³Π»Π°Π²Π΅, ΠΊΠ°ΠΊ основу для дальнСйшСй Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Π΅ Π²Π΅Π»ΠΈ сСбя Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Π°ΠΌ хочСтся.

Бинтаксис наслСдования классов

Для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово class, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ указываСтся имя Π½ΠΎΠ²ΠΎΠ³ΠΎ класса, Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅, Ρ‚ΠΈΠΏ объявлСния класса (public ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ), Π° Π·Π°Ρ‚Π΅ΠΌ имя Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, ΠΊΠ°ΠΊ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

class Dog : public Mammal

Π’ΠΈΠΏΡ‹ наслСдования классов Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π°Π»Π΅Π΅ Π² этой ΠΊΠ½ΠΈΠ³Π΅. Пока Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ наслСдованиС. Класс, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ производится Π½ΠΎΠ²Ρ‹ΠΉ класс, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ объявлСн Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΈΠ½Π°Ρ‡Π΅ компилятор ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ сообщСниС ΠΎΠ± ошибкС. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ наслСдования класса Dog ΠΎΡ‚ класса Mammal ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² листингС 11.1.

Листинг 11.1. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ наслСдованиС

1: //Листинг 11.1. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ наслСдованиС

2:

3: #include <iostream.h>

4: enum BREED { GOLDEN, CAIRN, DANDIE, SHETLAND, 00BERMAN, LAB }

5:

6: class Mammal

7: {

8:    public:

9:       // ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹

10:      Mammal();

11:      ~Mammal();

12:

13:      // ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ

14:      int GetAge()const;

15:      void SetAge(int);

16:      int GetWeight() const;

17:      void SetWeight();

18:

19:      // Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

20:      void Speak() const;

21:      void Sleep() const;

22:

23:

24:   protected:

25:      int itsAge;

26:      int itsWeight;

27: };

28:

29: class Dog : public Mammal

30: {

31:    public:

32:

33:       // ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹

34:       Dog();

35:       ~Dog();

36:

37:       // ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ

38:       BREED GetBreed() const;

39:       void SetBreed(BREED);

40:

41:       // Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

42:       WagTail();

43:       BegForFood();

44:

45:    protected:

46:       BREED itsBreed;

47: };


Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ° содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ объявлСния ΠΈ установки классов. Никаких Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠΊΠ° Π½Π΅ выполняСт.