ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ классы Π² C++

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ВмСстС с Ρ‚Π΅ΠΌ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сущСствСнно отличаСтся ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² программирования, Π² Ρ‚ΠΎΠΌ числС структурного ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ программирования. ΠŸΡ€ΠΈ этом ΠΊΠΎΡ€Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ломаСтся понятиС ΠΎΠ± Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ ΠΊΠ°ΠΊ ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² языка программирования, записанных Π΄Ρ€ΡƒΠ³ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… всС Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽΡ‚ΡΡ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ классы Π² C++ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

1. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ наслСдованиС

2. Доступ ΠΊ Π½Π°ΡΠ»Π΅Π΄ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ

3. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов

4. ΠžΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰ΠΈΠ΅ классы

5. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ связных списков Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСм являСтся элСмСнтом Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π½Π°ΡƒΠΊΠΎΠ΅ΠΌΠΊΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ проСктирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ИспользованиС этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π° ΠΏΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ€ΠΈ Π΅Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ. ΠŸΠ»Π°Ρ‚ΠΎΠΉ Π·Π° ΡΡ‚ΠΎ являСтся Π½Π°ΡƒΠΊΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ проСктирования, Ρ‚. Π΅. ΡƒΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ вСсьма большой части Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, составлСниС структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·ΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.

ВмСстС с Ρ‚Π΅ΠΌ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сущСствСнно отличаСтся ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² программирования, Π² Ρ‚ΠΎΠΌ числС структурного ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ программирования. ΠŸΡ€ΠΈ этом ΠΊΠΎΡ€Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ломаСтся понятиС ΠΎΠ± Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ ΠΊΠ°ΠΊ ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² языка программирования, записанных Π΄Ρ€ΡƒΠ³ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… всС Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈ ΡΡ‚Ρ€ΠΎΠ³ΠΎ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ (функциями), ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌΠΈ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этих Π΄Π°Π½Π½Ρ‹Ρ…. Π›ΡŽΠ±Π°Ρ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΊΠ°ΠΊ Π±Ρ‹ присоСдиняСтся ΠΊ Ρ‚Π΅ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ, для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π°. Π’Π°ΠΊΠΎΠ΅ объСдинСниС Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π² Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ носит Π½Π°Π·Π²Π°Π½ΠΈΠ΅ инкапсуляции. Π‘Π°ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ объСдинСния являСтся ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ соотвСтствуСт ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΎΠΉ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ написана ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Вакая структура ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ быстро Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ логичСскиС ошибки, Π½ΠΎ ΠΈ Ρ Π²Ρ‹ΡΠΎΠΊΠΎΠΉ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ€ΠΈ Π΅Π΅ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ΅ для получСния Π½ΠΎΠ²Ρ‹Ρ… вСрсий.

1. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ наслСдованиС

ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π’ C++ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ срСдства ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ всСх опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ свойств класса (ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²) Π΄Ρ€ΡƒΠ³ΠΈΠΌ классам, Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ свойства Π΄Π°Π½Π½ΠΎΠ³ΠΎ.

Один класс ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ всС ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса. Класс, ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰ΠΈΠΉ свои ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом. Класс, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ эти ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, называСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классом. Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ класса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ для Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠΎΠ², составляСт ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° наслСдуСмости свойств. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ класс «Π§Π΅Π»ΠΎΠ²Π΅ΠΊ» с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ «Π€Π°ΠΌΠΈΠ»ΠΈΡ», «Π˜ΠΌΡ», «ΠžΡ‚чСство» ΠΈ Π³ΠΎΠ΄ роТдСния. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ этого класса, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ: «Π—Π°Π΄Π°Ρ‚ΡŒΠ€Π°ΠΌΠΈΠ»ΠΈΡŽ», «Π”Π°Ρ‚ΡŒΠ“ΠΎΠ΄Π ΠΎΠΆΠ΄Π΅Π½ΠΈΡ», «Π’Ρ‹Π²Π΅ΡΡ‚ΠΈΠΠ°Π­ΠΊΡ€Π°Π½Π€Π˜Πž» ΠΈ Ρ‚. Π΄., Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² ΡΡ‚ΠΎΠΌ классС. Если Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ понадобится ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, скаТСм, «Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊ» ΠΈΠ»ΠΈ «Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚», становится ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ этот класс Π±ΡƒΠ΄Π΅Ρ‚ частным случаСм класса «Π§Π΅Π»ΠΎΠ²Π΅ΠΊ», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ класса «Π§Π΅Π»ΠΎΠ²Π΅ΠΊ» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΊΠ»Π°ΡΡ «Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊ» ΠΈΠ»ΠΈ «Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚». Намного ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π² ΡΡ‚ΠΎΠΌ случаС просто ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс, сказав Ρ‚Π΅ΠΌ самым, Ρ‡Ρ‚ΠΎ всС Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π·Π°ΠΈΠΌΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ. Π’ Ρ‚ΠΎΠΌ ΠΆΠ΅ случаС, Ссли Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС собствСнныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ «Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°» ΠΈΠ»ΠΈ «ΠΠΎΠΌΠ΅Ρ€Π—Π°Ρ‡Π΅Ρ‚Π½ΠΎΠΉΠšΠ½ΠΈΠΆΠΊΠΈ», ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС Π·Π°Π½ΠΎΠ²ΠΎ. Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ наслСдования Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сущСствуСт Π² Π‘++.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс строится Π½Π° Π±Π°Π·Π΅ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:

class Base {

// Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса

};

class Derived: [ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа] Base {

// Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса

};

ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Π·Π° Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ — Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ (:), Π·Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа ΠΈ ΠΈΠΌΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа опрСдСляСт ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости наслСдуСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса ΠΈ Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ².

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

class Level0 { // Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ класс

private: int a;

protected: int b;

public: int c;

void f0();

};

class Level1: public Level0 { // ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс

private: int d;

protected: int e;

public: int f;

void f1();

};

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс Level1 наслСдуСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Level0. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс содСрТит всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² ΡΠ°ΠΌΠΎΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС.

2. Доступ ΠΊ Π½Π°ΡΠ»Π΅Π΄ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ

Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²) класса Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС опрСдСляСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠ»ΡŽΡ‡Π΅ΠΌ доступа, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌ словами private, public ΠΈΠ»ΠΈ protected.

Частный (private) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ класса доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ ΠΈ Π΄Ρ€ΡƒΠ·ΡŒΡΠΌ этого класса, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΎΠ±Ρ‰ΠΈΠΉ (public) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ доступСн ΠΈ Π²Π½Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса. ЧастныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСдоступными.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классам доступ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ. C++ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ доступности ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² класса, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΉ (protected). Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ нСдоступны Π½ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΊΠΈΡ… частСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов.

Класс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ унаслСдован ΠΊΠ°ΠΊ public ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ private. ΠŸΡ€ΠΈ этом ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ private трансформируСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ доступа public ΠΈ protected Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ private ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса, Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ ΠΊΠ°ΠΊ private-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ становятся нСдоступны Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ наслСдования public Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ‚ уровня доступа. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс наслСдуСт всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ своСго Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΈΠ· Π½ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ public ΠΈ protected.

Π Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ наслСдования Π²Π»ΠΈΡΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π΄ΠΎΡΡ‚ΡƒΠΏ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС. ΠŸΡ€Π°Π²ΠΈΠ»Π° наслСдования доступа ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π² Ρ‚Π°Π±Π».4.1.

Π’Π°Π±Π»ΠΈΡ†Π° 4.1

Доступ наслСдования

Доступ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²

базовом классС

Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Π²

ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС

public

public

protected

private

public

protected

нСдоступСн

private

public

protected

private

private

private

нСдоступСн

ΠŸΡ€ΠΈ объявлСнии класса-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова class статусом доступа ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся private, Π° ΠΏΡ€ΠΈ объявлСнии с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова struct — public, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ

struct D: B{… }; ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚: struct D: public B{ public:…};

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, наслСдуСмый ΠΊΠ°ΠΊ public, сохраняСт Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ доступа, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» Ρƒ Π½Π΅Π³ΠΎ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ допустимыми ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ доступа.

class Level0 { // Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ класс

private: int a;

protected: int b;

public: int c;

int e;

void f0();

};

class Level1a: public Level0 {

protected: int d;

public: int f;

void f1();

};

// ΠžΠ±Ρ‹Ρ‡Π½Π°Ρ функция — ΠΈΠΌΠ΅Π΅Ρ‚ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ public-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ

void fn () {

Level0 L0;

Level1a L1;

L0.e = 1; // public-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚

L1.e = 1; // public-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ· Level0 ΡΠ²Π»ΡΡŽΡ‚ΡΡ

// Ρ‚Π°ΠΊΠΆΠ΅ public ΠΈ Π² Level1a

L1.f = 2;

L1.f0();

L1.f1();

}

// ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

void Level0: f0() { // ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊΠΎ Π²ΡΠ΅ΠΌΡƒ Level0

a = 1;

b = 2;

c = 3;

}

void Level1a: f1() {

b = 1; // доступа ΠΊ a Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚

c = 2;

d = 3; // ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊΠΎ Π²ΡΠ΅ΠΌΡƒ Level1a

e = 4;

f = 5;

f0();

}

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… частных ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классах L1. c ΠΈ L1. f0() внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fn () Π½Π΅ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ частными, хотя L0. c ΠΈ L0. f0() ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ доступными. Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ f0() ΠΈ f1() остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ.

class Level1b: private Level0 {

private: int d;

protected: int e;

public: int f;

void f1();

};

class Level1c: Level0 { // Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Level1b

private: int d;

protected: int e;

public: int f;

void f1();

};

// ΠžΠ±Ρ‰Π°Ρ функция

void fn () {

Level0 L0;

Level1b L1;

L0.c = 1;

L0.f0();

L1.f = 1; // доступа ΠΊ L1. c ΠΈΠ»ΠΈ L1. f0() Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅Ρ‚

L1.f1();

}

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. Однако ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ сам ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ сСбС доступ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅ΠΌΡƒ нСдоступСн ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ private, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

class Level1d: private Level0 {

public:

Level0:c; // ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ c ΠΊΠ°ΠΊ public

int f;

void f1();

};

// ΠžΠ±Ρ‰Π°Ρ функция

void fn () {

Level0 L0;

Level1d L1;

L0.c = 1;

L0.f0();

L1.c = 1; // доступ ΠΊ c Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, Π½ΠΎ

// f0 остаСтся нСдоступной

L1.f = 2;

L1.f1();

}

ΠŸΡ€ΠΈ объявлСнии Level1d ΠΊΠ°ΠΊ private-ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΠ΅ для доступности ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ c измСняСтся с public Π½Π° private. Однако, объявив ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ c ΠΊΠ°ΠΊ public, ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, дСлая L1. c Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΠΉ ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fn (). Level1d Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ сам сСбС доступ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ a, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся частным (private) Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС.

3. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов

Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ конструкторы. Если Ρƒ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Π΅ΡΡ‚ΡŒ конструктор, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ объявлСнии ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΈ Π΅ΡΠ»ΠΈ Ρƒ ΡΡ‚ΠΎΠ³ΠΎ конструктора Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ конструктора Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ конструктора ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса. Π’Ρ‹Π·ΠΎΠ² конструктора Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса слСдуСт нСпосрСдствСнно послС ΠΈΠΌΠ΅Π½ΠΈ конструктора ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса, ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ скобкой.

class Level0 {

private: int a;

protected: int b;

public: int c;

void f0();

Level0(int v0) {

a = b = c = v0;

}

};

class Level1: public Level0 {

private: int d;

protected: int e;

public: int f;

void f1();

Level1(int v0, int v1): Level0(v0) {

d = e = f = v1;

}

};

// ΠžΠ±Ρ‰Π°Ρ функция

void fn () {

Level0 L0(1);

Level1 L1(1,2);

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ protectedΠΈ public-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ Π²Ρ‹Π·ΠΎΠ²Π° конструктора. C++ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Ссли этого Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ сам конструктор ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ даст Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ конструктора.

Level1(int v0, int v1): (v0) { // ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ — Level (v0)

d = e = f = v1;

}

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΌΠ»Π΅ΠΌΡ‹Ρ… (см. ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„) классов ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ строкС, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ конструктор Level1 эквивалСнтСн Π΄Π²ΡƒΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ:

Level1(int v0, int v1): Level (v0), d (v1), e (v1), f (v1) { }

4. ΠžΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰ΠΈΠ΅ классы

Π‘Ρ€Π°Π²Π½ΠΈΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ классы с ΠΊΠ»Π°ΡΡΠΎΠΌ Level1, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΌΠ»Π΅Ρ‚, Π° Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Level0. Для Ρ‚Π°ΠΊΠΈΡ… классов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ «ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰ΠΈΠ΅ классы», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

class Level1 {

public: Level0 L0;

private: int d;

protected: int e;

public:

int f;

void f1();

};

// НСпривСлСгированная функция

void fn () {

Level1 L1;

L1.L0.c =1;

L1.f = 2;

L1.L0.f0();

L1.f1();

}

// ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½Π°Ρ функция

void Level1: f1() {

L0.c = 1;

d = 2; e = 3; f = 4;

L0.f0();

}

Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰Π΅Π³ΠΎ классов Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π°. Level0: a Π½Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ΅Π½ для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² класса Level1, Π° Level0: c Π΄ΠΎΡΡ‚ΡƒΠΏΠ΅Π½. Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ (protected) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Level0: b Π½Π΅ Π΄ΠΎΡΡ‚ΡƒΠΏΠ΅Π½ для Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰Π΅Π³ΠΎ класса.

ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰ΠΈΠΌ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классами состоит Π² ΡΠΏΠΎΡΠΎΠ±Π΅ доступа ΠΊ Π½Π°ΡΠ»Π΅Π΄ΡƒΠ΅ΠΌΡ‹ΠΌ элСмСнтам. Всякий Ρ€Π°Π· ΠΏΡ€ΠΈ доступС ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ Level0 ΠΎΠ½ Π·Π°Π΄Π°Π΅Ρ‚ся ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ L0. c, L0. f0() ΠΈ Ρ‚. Π΄. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΆΠ΅ класс ссылаСтся ΠΊ ΡΡ‚ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ ΠΊΠ°ΠΊ ΠΊ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΌ.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ своСго Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰ΠΈΠΉ класс просто прСдоставляСт мСсто ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса.

5. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ связных списков

Класс связного списка являСтся довольно популярным Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ построСно мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… классов. Рассмотрим Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ класса списка.

//********************************//

// ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²//

// классов «ΡΠΏΠΈΡΠΎΠΊ», «Π΄Π²ΡƒΡΠ²ΡΠ·Π½Ρ‹ΠΉ //

// список", «Π·Π°ΠΊΠΎΠ»ΡŒΡ†ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ список» //

//————————————————————————-//

// Автор: ΠšΠ°ΡˆΠΈΡ€ΠΈΠ½ Π”. И. //

//—————————————————————//

// ВСрсия: 07.12.02 v. 1.01.2 //

//—————————————————————————————————————;

#include

#include

#include

#include

#include

#include

#define IMAX 4

class List{ // Класс «Π‘писок»

protected:

float Value; // Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ эл-Ρ‚Π° списка

List *Next; // @ слСд. эл-Ρ‚Π° списка

public:

void AddElList (char);

void OutpList (char);

void DelElList (int);

void AddElList (float, char);

void CreateList ();

List (const char *Ident) // ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса

{

cout << «Lead the value of the first «; //Запрос Π½Π° Π²Π²ΠΎΠ΄

// значСния

cout << «element of list «<<'n';

cin >> Value; // Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ эл-Ρ‚Π°

Next = NULL; // 1-ΠΉ эл-Ρ‚ ссылаСтся Π½Π° NULL

}

List () // ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

{

Value = 0; // Π§Ρ‚Π΅Π½ΠΈΠ΅ значСния Π½ΠΎΠ². эл-Ρ‚Π°

Next = NULL; // Нов. эл-Ρ‚ ссыл-ся Π½Π° NULL

}

~List (); // ДСструктор класса

};

//————————————————//

// ДСструктор класса List //

//————————————————//

List:~List ()

{

List *CurrEl, // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ эл-Ρ‚ списка

*TNext; // Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ эл-Ρ‚

CurrEl = this; // ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ эл-Ρ‚ — ΠžΠ±ΡŠΠ΅ΠΊΡ‚

while ((CurrEl->Next≠ NULL) &&

(CurrEl->Next≠ this)){

TNext = CurrEl->Next; // Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΠΌ адрСс слСд. эл-Ρ‚Π°

free (CurrEl);

CurrEl = TNext; // Π‘Π»Π΅Π΄. эл-Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ

};

free (CurrEl); // Π£Π΄Π°Π»ΠΈΡ‚ΡŒ послСдний эл-Ρ‚

cout << «Object deleted» << 'n';

getch ();

}

//*****************************************************//

// Ѐункция добавлСния элСмСнта Π² ΠΊΠΎΠ½Π΅Ρ† односвязного списка //

//*****************************************************//

void List: AddElList (char R)

{

List *CurrEl, // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ эл-Ρ‚ списка

*NewEl = new List; // Новый эл-Ρ‚ списка

// Π’Ρ‹Π΄Π΅Π»-Π΅ памяти ΠΏΠΎΠ΄ Π½ΠΎΠ². эл-Ρ‚

CurrEl = this; // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ эл-Ρ‚ — ΠžΠ±ΡŠΠ΅ΠΊΡ‚

List* KeyWord;

KeyWord = R? this: NULL;

while (CurrEl->Next≠ KeyWord){ // ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² ΠΊΠΎΠ½Π΅Ρ† списка

CurrEl = CurrEl->Next;

}

cout << «Lead the value of new element of list «;

cin >> NewEl->Value; // Π’Π²ΠΎΠ΄ Π·Π½Π°Ρ‡-я Π½ΠΎΠ²ΠΎΠ³ΠΎ эл-Ρ‚Π°

NewEl->Next = KeyWord; // Новый эл-Ρ‚ ссылаСтся Π½Π° NULL

CurrEl->Next = NewEl; // Новый эл-Ρ‚ — Π² ΠΊΠΎΠ½Π΅Ρ† списка

}

//————————————————————————————————//

// Ѐункция Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° ΡΠΊΡ€Π°Π½ односвязного списка //

//————————————————————————————————//

void List: OutpList (char R)

{

int Count = 1; // Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ эл-Ρ‚ΠΎΠ² списка

List *CurrEl; // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ эл-Ρ‚ списка

CurrEl = this; // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ эл-Ρ‚ — ΠžΠ±ΡŠΠ΅ΠΊΡ‚

void* KeyWord;

KeyWord = R? this: NULL;

while (CurrEl≠ KeyWord){

cout << Count << «-th element of list = «; // Π’Ρ‹Π²ΠΎΠ΄ эл-Ρ‚Π° списка

cout << CurrEl->Value << 'n';

CurrEl = CurrEl->Next;

Count++;

}

}

//——————————————————————————-//

// Ѐункция удалСния i-Π³ΠΎ элСмСнта списка //

//——————————————————————————-//

void List: DelElList (int i)

{

int Count = 1; // Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ эл-Ρ‚ΠΎΠ² списка

List *CurrEl, // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ эл-Ρ‚ списка

*PrevEl; // ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ эл-Ρ‚

CurrEl = this; // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ эл-Ρ‚ — ΠžΠ±ΡŠΠ΅ΠΊΡ‚

while (Count < i){ // ΠŸΡ€Π΅Ρ…ΠΎΠ΄ ΠΊ i-ΠΌΡƒ эл-Ρ‚Ρƒ

PrevEl = CurrEl; // Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄. эл-Ρ‚Π°

CurrEl = CurrEl->Next;

Count++;

}

PrevEl->Next = CurrEl->Next; // ΠŸΡ€Π΅Π΄. эл-Ρ‚ ссыл-ся Π½Π° ΡΠ»Π΅Π΄.

free (CurrEl);

}

//———————————————————————————————//

// Ѐункция добавлСния элСмСнта Π² ΠΊΠΎΠ½Π΅Ρ† списка //

// с Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ элСмСнта ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ //

//———————————————————————————————//

void List: AddElList (float Val, char R)

{

List *CurrEl,

*NewEl = new List;

CurrEl = this; // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ эл-Ρ‚ — ΠžΠ±ΡŠΠ΅ΠΊΡ‚

List* KeyWord;

KeyWord = R? this: NULL;

while (CurrEl->Next≠ KeyWord){ // ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² ΠΊΠΎΠ½Π΅Ρ† списка

CurrEl = CurrEl->Next;

}

CurrEl->Next = NewEl; // Новый эл-Ρ‚ — Π² ΠΊΠΎΠ½Π΅Ρ† списка

NewEl->Value = Val; // Π’Π²ΠΎΠ΄ Π·Π½Π°Ρ‡-я Π½ΠΎΠ²ΠΎΠ³ΠΎ эл-Ρ‚Π°

NewEl->Next = KeyWord; // Новый эл-Ρ‚ ссылаСтся Π½Π° NULL

}

//————————————————————————————————//

// Ѐункция создания списка (Π²Π²ΠΎΠ΄ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ эл-Ρ‚Π° //

// списка, созд. конструктором Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²) //

//————————————————————————————————-//

void List: CreateList ()

{

List *CurrEl;

char ch;

int Ok = 0;

CurrEl = this; // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ эл-Ρ‚ — ΠžΠ±ΡŠΠ΅ΠΊΡ‚

do

if ((Value == 0)||(Ok == 1)){

cout << «Lead the value of the first «; //Запрос Π½Π° Π²Π²ΠΎΠ΄

// значСния

cout << «element of new list «<<'n';

cin >> CurrEl->Value;

break;

}

else

while (1);

}

//—————————————————————————————————————;

//——————————————————-//

// ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс: //

// двусвязный список //

//——————————————————-//

class DLList: public List{

List *Prev; // АдрСс ΠΏΡ€Π΅Π΄. эл-Ρ‚Π° списка

public:

DLList (): List (){

Prev = NULL;

}

void AddElList ();

void DelElList (int);

void AddElList (float);

};

//———————————————————————————————————————//

// Ѐункция добавлСния элСмСнта Π² ΠΊΠΎΠ½Π΅Ρ† двусвязного списка //

//———————————————————————————————————————//

void DLList: AddElList ()

{

DLList *CurrEl, // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ эл-Ρ‚ списка

*NewEl = new DLList; // Новый эл-Ρ‚ списка

// Π’Ρ‹Π΄Π΅Π»-Π΅ памяти ΠΏΠΎΠ΄ Π½ΠΎΠ². эл-Ρ‚

CurrEl = this; // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ эл-Ρ‚ — ΠžΠ±ΡŠΠ΅ΠΊΡ‚

while (CurrEl->Next≠ NULL){ // ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² ΠΊΠΎΠ½Π΅Ρ† списка

CurrEl = (DLList*) CurrEl->Next;

}

cout << «Lead the value of new element of list «;

cin >> NewEl->Value; // Π’Π²ΠΎΠ΄ Π·Π½Π°Ρ‡-я Π½ΠΎΠ²ΠΎΠ³ΠΎ эл-Ρ‚Π°

NewEl->Next = NULL; // Новый эл-Ρ‚ ссылаСтся Π½Π° NULL

CurrEl->Next = NewEl; // Новый эл-Ρ‚ — Π² ΠΊΠΎΠ½Π΅Ρ† списка

NewEl->Prev = CurrEl; // Новый эл-Ρ‚ ссыл-ся Π½Π° ΠΏΡ€Π΅Π΄.

}

//———————————————————————————————————//

// Ѐункция удалСния i-Π³ΠΎ элСмСнта двусвязного списка //

//———————————————————————————————————//

void DLList: DelElList (int i)

{

int Count = 1; // Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ эл-Ρ‚ΠΎΠ² списка

DLList *CurrEl, // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ эл-Ρ‚ списка

*PrevEl; // ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ эл-Ρ‚

CurrEl = this; // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ эл-Ρ‚ — ΠžΠ±ΡŠΠ΅ΠΊΡ‚

while (Count < i){ // ΠŸΡ€Π΅Ρ…ΠΎΠ΄ ΠΊ i-ΠΌΡƒ эл-Ρ‚Ρƒ

PrevEl = CurrEl; // Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄. эл-Ρ‚Π°

CurrEl = (DLList*) CurrEl->Next;

Count++;

}

PrevEl->Next = (DLList*) CurrEl->Next; // ΠŸΡ€Π΅Π΄. эл-Ρ‚

// ссыл-ся Π½Π° ΡΠ»Π΅Π΄.

PrevEl = (DLList*) PrevEl->Next;

PrevEl->Prev = CurrEl->Prev; // Π‘Π»Π΅Π΄. эл-Ρ‚ ссыл-ся Π½Π° ΠΏΡ€Π΅Π΄.

free (CurrEl);

}

//—————————————————————————————————//

// Ѐункция добавлСния элСмСнта Π² ΠΊΠΎΠ½Π΅Ρ† списка //

// (двусвязного) с Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ элСмСнта ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ //

//—————————————————————————————————//

void DLList: AddElList (float Val)

{

DLList *CurrEl,

*NewEl = new DLList;

CurrEl = this; // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ эл-Ρ‚ — ΠžΠ±ΡŠΠ΅ΠΊΡ‚

while (CurrEl->Next≠ NULL){ // ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² ΠΊΠΎΠ½Π΅Ρ† списка

CurrEl = (DLList*) CurrEl->Next;

}

CurrEl->Next = NewEl; // Новый эл-Ρ‚ — Π² ΠΊΠΎΠ½Π΅Ρ† списка

NewEl->Value = Val; // Π’Π²ΠΎΠ΄ Π·Π½Π°Ρ‡-я Π½ΠΎΠ²ΠΎΠ³ΠΎ эл-Ρ‚Π°

NewEl->Next = NULL; // Новый эл-Ρ‚ ссылаСтся Π½Π° NULL

}

//—————————————————————————————————————;

//———————————————————-//

// ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс: //

// Π·Π°ΠΊΠΎΠ»ΡŒΡ†ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ список //

//———————————————————-//

class RLList: public List{

public:

RLList (){

Value = 0;

Next = this;

}

};

//—————————————————————————————————————;

// Главная функция ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ тСстируСт Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ

// Класса «Π‘писок»

int main (int argc, char **argv)

{

List TestL;

int Number;

char ch = 'Y'; // Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠ΅Ρ€Π΅ΠΌ-я

char Key = ' ', *PKey;

// ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅

cout << «Hellow! You have ran the program of» ;

cout << «processing Lists just now.» << 'n';

cout << «First part:» << 'n';

cout << «Please, enter you choose:» << 'n';

PKey = &Key;

// Π“Π»Π°Π²Π½ΠΎΠ΅ мСню

do{

cout << «1 — New List» << 'n';

cout << «2 — Adding Element to List» << 'n';

cout << «3 — Deleting Element of List» << 'n';

cout << «4 — Output List to screen» << 'n';

cout << «5 — Exit» << 'n';

Key = getch ();

switch (Key){

case '1': TestL. CreateList (); break;

case '2': TestL. AddElList (0); break;

case '3': cout << «Enter the number of element» ;

cout << «you want to delete» << 'n';

cin >> Number;

TestL.DelElList (Number); break;

case '4': TestL. OutpList (0); break;

case '5': break;

default: cout << «Input Error» ;

}

fread (PKey, 1,1,stdin);

if (Key == '5')

break;

clrscr ();

}

while (1);

clrscr ();

cout << «Second part:» << 'n';

List L1(«L1»); // ΠžΠ±ΡŠΠ΅ΠΊΡ‚ — список

do

if ((ch == 'Y')

while (1); // БСсконСчный Ρ†ΠΈΠΊΠ»

L1.AddElList (12, 0);

L1.OutpList (0); // Π’Ρ‹Π²ΠΎΠ΄ сп-ΠΊΠ° Π½Π° ΡΠΊΡ€Π°Π½

getch ();

clrscr ();

cout << «Third part:» << 'n';

List L2;

int i;

L2.CreateList ();

for (i = 0; i <= IMAX; i++){

L2.AddElList ((float) i+1, 0);

}

L2.OutpList (0); // Π’Ρ‹Π²ΠΎΠ΄ сп-ΠΊΠ° Π½Π° ΡΠΊΡ€Π°Π½

getch ();

return 0;

}

//—————————————————————————————————————;

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ опрСдСляСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс односвязного списка List Π² ΡΠΎΠΎΡ‚вСтствии с ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠ΅ΠΉ ΠΏΠΎΠ»Π½Ρ‹ класса содСрТащий всС основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ:

void AddElList (char) — Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта,

void OutpList (char) — Π²Ρ‹Π²ΠΎΠ΄ содСрТимого мписка Π½Π° ΡΠΊΡ€Π°Π½,

void DelElList (int) — ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта,

void CreateList () — ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ созданиС списка.

Как слСдуСт ΠΈΠ· Ρ‚Сста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, класс двусвязного списка DLList являСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классом ΠΎΡ‚ List. Вакая рСализация цСлСсообразна вслСдствиС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² односвязного списка ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ двусвязного, хотя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° двусвязного списка Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π° рассмотрСниСм ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… ссылок Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹. Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ рСализуСтся ΠΈ ΠΊΠ»Π°ΡΡ Π·Π°ΠΊΠΎΠ»ΡŒΡ†ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ списка RLList, ΠΏΠΎ Ρ‚Π΅ΠΌ ΠΆΠ΅ сообраТСниям ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° List.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа protected позволяСт Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΏΠΎΠ»Π΅ΠΉ-Π΄Π°Π½Π½Ρ‹Ρ… класса List Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠ»Π°ΡΡΠ°Ρ…, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° List — DLList ΠΈ RLList. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹ класса List описаны с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ спСцификатора protected, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈΠΌΠ΅Π½Π° ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов, Ρ‚Π°ΠΊ ΠΈ Π²ΠΎ Π²ΡΠ΅Ρ… ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… функциях ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Бсылка Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ элСмСнт списка Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ класса DLList ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ описана ΠΊΠ°ΠΊ privat, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Π°Π½Π½Ρ‹ΠΉ класс Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для Π΄Ρ€ΡƒΠ³ΠΈΡ… классов.

Для всСх классов, описанных Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ дСструктор. Он Π½Π°ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ классами ΠΊΠ°ΠΊ обычная функция-Ρ‡Π»Π΅Π½, ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, нСсмотря Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ ΠΏΠΎ Ρ‡ΠΈΡΠ»Ρƒ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΠΏΠΎΠ»Π΅ΠΉ.

Ѐункция main () Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° лишь для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ работоспособности ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ классов ΠΈ ΠΏΠΎΡΡ‚ΠΎΠΌΡƒ содСрТит описаниС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ ΠΌΠ΅Π½ΡŽ для Π΅Π³ΠΎ тСстирования. ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ число ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‡Π΅Ρ‚ΠΊΠΎ Π·Π½Π°Π»ΠΈ своС мСсто ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡ΠΈΡ Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π΅, ΠΈ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°ΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ классификации, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ классов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Если Π΄Π²Π° класса ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ свойствами, Π·Π½Π°Ρ‡ΠΈΡ‚ для Π½ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΡΠ²ΠΎΠΉΡΡ‚Π²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ для этих Π΄Π²ΡƒΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ. Π’ ΡΡ‚ΠΎΠΌ случаС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ классов с ΠΎΠ±Ρ‰ΠΈΠΌΠΈ свойствами Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ своих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, связанных с ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ свойствами. ΠžΠ±Ρ‰ΡƒΡŽ ΠΆΠ΅ Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ класса.

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ языки программирования, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π‘++, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π² Ρ€Π°ΡΠΏΠΎΡ€ΡΠΆΠ΅Π½ΠΈΠ΅ программиста ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΉ арсСнал ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ Π΄Π»Ρ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ ΠΈΡ… ΡΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Π»Π°Π΄Π΅Ρ‚ΡŒ систСмой элСмСнтов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π­Ρ‚ΠΎΠΉ систСмС элСмСнтов для языка Π‘++ ΠΈ ΠΏΠΎΡΠ²ΡΡ‰Π΅Π½ настоящий Ρ€Π°Π·Π΄Π΅Π» ΠΊΠ½ΠΈΠ³ΠΈ.

1. М. Уэйт, Π‘. ΠŸΡ€Π°Ρ‚Π°, Π”. ΠœΠ°Ρ€Ρ‚ΠΈΠ½ Π―Π·Ρ‹ΠΊ Π‘ΠΈ: ΠŸΠ΅Ρ€ с Π°Π½Π³Π».-М.: ΠœΠΈΡ€, 2007.-463 с., ΠΈΠ».

2. Π£ΠΈΠ½Π΅Ρ€ Π . Π―Π·Ρ‹ΠΊ Π’ΡƒΡ€Π±ΠΎ Π‘ΠΈ: ΠŸΠ΅Ρ€ с Π°Π½Π³Π».-М.: ΠœΠΈΡ€, 2010.-384 с., ΠΈΠ».

3. Π’. Π’. ПодбСльский. Π―Π·Ρ‹ΠΊ C++: Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС. — ΠœΠΎΡΠΊΠ²Π°: Ѐинансы ΠΈ ΡΡ‚атистика, 199 560с.

4. Π˜Ρ€Ρ Пол. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ C++: ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — ΠšΠΈΠ΅Π²: НИИПЀ Π”ΠΈΠ°Π‘ΠΎΡ„Ρ‚ Π›Ρ‚Π΄, 199 480с.

5. Π’. ЀСйсон. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Borland C++ 4.5: ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — ΠšΠΈΠ΅Π²: Π”ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΈΠΊΠ°, 1996. 544с.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ