ΠΠΎΠΏ.
ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅Π½Ρ Π§Π»Π΅Π½Ρ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ° ΠΏΠ°ΠΌΡΡΠΈ static. Π§Π»Π΅Π½ Π΄Π°Π½Π½ΡΡ , ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠΉ ΠΊΠ°ΠΊ static, ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅. ΠΠ΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅Π½Ρ Π΄Π°Π½Π½ΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° (Ρ.Π΅. ΠΎΠ±ΡΠ΅ΠΊΡΠ°) ΠΊΠ»Π°ΡΡΠ°. ΠΡΠ»ΠΈ Π±Ρ Π½Π΅ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅Π½ΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π²ΡΠ΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌ ΠΊΠ»Π°ΡΡΠ°, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ Π±Ρ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠΎΠΏ. ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Π ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π»ΡΠ±Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΡΠ΅, ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° Π»ΡΠ±ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, — Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½Π°Ρ, ΡΠΏΡΠΎΡΠ΅Π½Π½Π°Ρ Π·Π°ΠΏΠΈΡΡ ΡΡΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡΠ°Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π§Π΅ΠΌ Π²ΡΡΠ΅ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠ·ΡΠΊΠ°, ΡΠ΅ΠΌ Π² Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΎΡΠΌΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΠ²ΡΠΈΡΡ ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡΠ°Ρ , Π° Π² C ΠΈΠ»ΠΈ ΠΠ°ΡΠΊΠ°Π»Π΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°.
Π‘ ΡΠΎΡΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ Π²ΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ, ΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π²ΡΠ΄Π΅Π»ΡΡΡ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΈ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ Π½Π΅ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅. ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ ΠΊ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΠΏΠΎΡΠ»Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ²Π»Π΅ΡΡΡΡ ΠΎΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ Π΅Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π½Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ — ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΠΎΠ΄ΡΠ»Ρ — ΡΡΠΎ Π½Π°Π±ΠΎΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΡΡΠΊΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π³ΡΡΠΏΠΏΠΈΡΡΠ΅ΡΡΡ. ΠΠ·Π²Π½Π΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²ΠΈΠ΄Π½Π° Π² Π±ΠΎΠ»Π΅Π΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ Π²ΡΠ΅ ΡΠ°Π·Π½ΠΎΡΠΎΠ΄Π½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ ΡΠΈΠ³ΡΡΠ΅, Π²ΡΡΠ΅ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Π½Π° ΡΠΊΡΠ°Π½Π΅ (ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ°Π·ΠΌΠ΅Ρ, ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ (ΡΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡΠΎΡΠ°), ΡΠ²Π΅Ρ).
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΡΠ΅Π±ΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (Π½Π°ΠΏΡΠΌΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ, ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΡ, ΡΠΌΠ΅Π½ΠΈΡΡ ΡΠ²Π΅Ρ, ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡ). ΠΠ½ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Ρ.
ΠΡΠΈ ΡΡΠΎΠΌ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π·Π½Π°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ — Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ².
ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΏΡΠ΅ΡΠ»Π΅Π΄ΡΡΡ ΡΠ΅Π»Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π΅Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΏΠΎΠ½ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ ΠΈΠ΄Π΅ΠΉ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΡΡΠΈ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ, Π³Π΄Π΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅, Π² ΠΊΠ»Π°ΡΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ . Π’ΠΎΡ, ΠΊΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ Π΄Π°Π½Π½ΡΡ (ΠΎΠ΄Π½Π° ΡΠΈΠ³ΡΡΠ°). Π’ΠΎΡ, ΠΊΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠ»Π°ΡΡ, ΡΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΏΠΈΠΉ Π΄Π°Π½Π½ΡΡ (ΡΠΈΠ³ΡΡ), ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΅ΠΌΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ.
Π ΠΊΠ»Π°ΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ. ΠΠ»Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· Π΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ — Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½Ρ. ΠΠ΄Π΅Ρ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡΠ° — Π²Π΅Π΄Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ (Π΄Π°Π½Π½ΡΠ΅) ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ (ΡΡΠ½ΠΊΡΠΈΠΈ). ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΡΡΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠ², ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΡΠ²Π»ΡΠ΅Π½ΠΈΠΉ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠΌΠ΅ΡΡ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.
ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈ Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡΠ°, Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΡΡΠ»Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ²Π°, ΡΡΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΌΡΡΠ»ΠΈΡΡ ΠΏΠΎΠ½ΡΡΠΈΡΠΌΠΈ (ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ), Π° Π½Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ (ΡΡΠ½ΠΊΡΠΈΠΈ). ΠΠΎΡΡΠΎΠΌΡ ΠΠΠ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»Π΅Π½ΠΎ ΠΊ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΌΡΡΠ»Π΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΠ»Π°ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ , ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ. Π’ΠΈΠΏ Π·Π°Π΄Π°Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΊ ΡΡΠΈΠΌ Π²Π΅Π»ΠΈΡΠΈΠ½Π°ΠΌ. ΠΡΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΠΏ int ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ Π²Π΅Π»ΠΈΡΠΈΠ½Π° ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° (int i) Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 4 Π±Π°ΠΉΡΠ°, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡ -231 Π΄ΠΎ 231-1 ΠΈ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ, Π²ΡΡΠΈΡΠ°ΡΡ, ΠΈ Ρ. Π΄. Π‘ΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ (ΠΊΠ²Π°Π΄ΡΠ°Ρ) ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° (ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ²Π°Π΄ΡΠ°Ρ) Π±ΡΠ΄Π΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ Π±Π°ΠΉΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ (ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ°Π·ΠΌΠ΅Ρ, ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ (ΡΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡΠΎΡΠ°), ΡΠ²Π΅Ρ). Π Π°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΡΠΊΡΠ°Π½Π°, ΡΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° — ΠΎΡ 0 Π΄ΠΎ 90 Π³ΡΠ°Π΄ΡΡΠΎΠ². ΠΠ²Π°Π΄ΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ, ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΡ, ΡΠΌΠ΅Π½ΠΈΡΡ ΡΠ²Π΅Ρ, ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡ.
Π‘ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π΄Π΅ΡΠ°Π»ΠΈ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΡΡΡΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΊΠ»Π°ΡΡΠ° Π·Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ (Π²Π΅Π΄Ρ ΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΌΠΈΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΏΡΠ°Π²Π»ΡΡΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ, Π½Π΅ ΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΠ³ΠΎΡΠ°Π½ΠΈΡ ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ).
ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΠΠ) — ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ 90-Ρ . ΠΠ½Π° Π±Π΅ΡΠ΅Ρ Π½Π°ΡΠ°Π»ΠΎ Π² Simula 67 ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ Π² (ΡΠ°Π½Π½ΠΈΡ ) Smalltalk, LISP, Clu ΠΈ (Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ ) Actor, Eiffel, Objective C, Java ΠΈ C++.
[ΠΡΡ]: ΠΠΠ — ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π° ΠΊΠ»Π°ΡΡΡ ΠΎΠ±ΡΠ°Π·ΡΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΡΠΈ Π²ΡΡΠΊΠ°Π·ΡΠ²Π°Π½ΠΈΡ:
ΠΠΠ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π° Π½Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ;
ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°;
ΠΊΠ»Π°ΡΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΈ.
ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΠΠ ΠΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡΠ° ΠΠ°Π»ΠΈΡΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π‘ΠΎΠΊΡΡΡΠΈΠ΅ Π΄Π΅ΡΠ°Π»Π΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π° ΡΡΠ°ΠΏΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ — ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΠ΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ, Π½Π΅ Π²Π»ΠΈΡΡΡΠΈΡ Π½Π° Π²Π½Π΅ΡΠ½Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.).
ΠΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ — ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΡΠ΄Π΅Π»Π΅Π½ΠΈΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΡ Π΅Π³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅; ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΡΡΠ²Π° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΎΡ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
Inheritance — Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅.
Π€Π°Π·Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° C++ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ·:
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² (Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .cpp);
Π½ΡΠ»Ρ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² (Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .h).
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΡΡΡ ΡΠ΅ΠΊΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π’ΡΠ°Π½ΡΠ»ΡΡΠΈΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΡΠΈ ΡΠ°Π·Ρ (ΡΠΌ. ΡΠΈΡ. 2):
- Π°) ΡΠ°Π·Π° ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ» Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ Π² Π½Π΅Π³ΠΎ (Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ #include) ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°;
- Π±) ΡΠ°Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠ°ΠΆΠ΄Π°Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» (Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .obj), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ.
- Π²) ΡΠ°Π·Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. ΠΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π² ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ.
Π ΠΈΡ. 1. Π’ΡΠ°Π½ΡΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° C++
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ (.cpp) ΡΠ°ΠΉΠ» ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π΄Π²Π΅ ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ°Π·Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ . ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ΅ΠΊΡΡΠ° Π² ΠΎΠ΄Π½ΠΎΠΌ .cpp-ΡΠ°ΠΉΠ»Π΅ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΡ .cpp-ΡΠ°ΠΉΠ». ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ .h-ΡΠ°ΠΉΠ»Π° ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ .cpp-ΡΠ°ΠΉΠ»ΠΎΠ², Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΡ Π΅Π³ΠΎ.
ΠΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ — ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°Π·Π΅ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ. ΠΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ: ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ, Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠ°ΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ. ΠΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° #.
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ΠΌΠ°ΠΊΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ.
#define ΠΈΠ΄Π΅Π½ΡΠΈΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΡΠΈΠΉ_ΡΠ΅ΠΊΡΡ.
#define ΠΈΠ΄Π΅Π½ΡΠΈΡ (ΠΈΠ΄Π΅Π½ΡΠΈΡ, ΠΈΠ΄Π΅Π½ΡΠΈΡ, …, ΠΈΠ΄Π΅Π½ΡΠΈΡ) Π·Π°ΠΌΠ΅ΡΠ°ΡΡΠΈΠΉ_ΡΠ΅ΠΊΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΉ Π·Π°ΠΌΠ΅Π½Ρ: Π²ΠΎ Π²ΡΠ΅Ρ ΠΌΠ΅ΡΡΠ°Ρ , Π³Π΄Π΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π»Π΅ΠΊΡΠ΅ΠΌΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡ, Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π·Π°ΠΌΠ΅ΡΠ°ΡΡΠΈΠΉ_ΡΠ΅ΠΊΡΡ (ΠΎΡ ΠΌΠ΅ΡΡΠ° ΠΌΠ°ΠΊΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΡΠ°ΠΉΠ»Π°). ΠΡΠΈΠΌΠ΅Ρ:
#define IDI_ICON1 101.
#define HIWORD (l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF)).
#define CASE break; case.
#define FOREVER for (;;).
ΠΠ°ΠΊΡΠΎΡΡ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² C, Π½ΠΎ Π² C++ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΆΠ΅. ΠΠΌΠ΅ΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° const, Π° Π²ΠΌΠ΅ΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° — inline-ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° #include.
#include «path-spec» .
#include.
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ (Π΄ΠΎ 10 ΡΡΠΎΠ²Π½Π΅ΠΉ).
#undef ΠΈΠ΄Π΅Π½ΡΠΈΡ.
#pragma ΡΠΎΠΊΠ΅Π½-ΡΡΡΠΈΠ½Π³ #pragma vtordisp (off).
ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ (scope).
ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠΌΡ (Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ) Π² C++ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠ° ΠΎΠ±Π»Π°ΡΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ±Π»Π°ΡΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠΌΠ΅Π½ΠΈ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ 5 ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ: Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΎ.Π²., ΠΎ.Π². ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎ.Π². ΡΠ°ΠΉΠ»Π°, ΠΎ.Π². ΠΊΠ»Π°ΡΡΠ°, ΠΎ.Π². ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°.
ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠΌΡ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π²Π½ΡΡΡΠΈ Π±Π»ΠΎΠΊΠ°, Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΈ Π² ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΡ Π² Π½Π΅ΠΌ Π±Π»ΠΎΠΊΠ°Ρ , ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΡΠΊΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ. ΠΠ°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½.
ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. Π’Π°ΠΊΡΡ ΠΎ.Π². ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΊΠΈ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° goto. ΠΠ΅ΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ Π½Π΅ Π·Π° Π΅Π΅ ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ.
ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ°ΠΉΠ»Π°. ΠΡΠ±ΠΎΠ΅ ΠΈΠΌΡ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π²Π½Π΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π±Ρ ΡΠΎ Π½ΠΈ Π±ΡΠ»ΠΎ Π±Π»ΠΎΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠ°, ΠΈΠΌΠ΅Π΅Ρ ΠΎ.Π². ΡΠ°ΠΉΠ»Π°. ΠΠΌΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΡΠΊΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΡΠ°ΠΉΠ»Π°. ΠΠΎΡΡΡΠΏ ΡΠ΅ΡΠ΅Π· ΡΠ½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ: i.
ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΠΌΠ΅Π½Π° ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° ΠΈΠΌΠ΅ΡΡ ΠΎ.Π². ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΡΡΡΠΏ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΠ΅ΠΊΡ (. ->) ΠΈ ΡΠ΅ΡΠ΅Π· Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ classname: i.
ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°. ΠΡΡ ΠΎ.Π². ΠΈΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π½Π°, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π‘Π²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ (linkage).
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ, ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ Π²ΠΌΠ΅ΡΡΠ΅. Π‘ΠΏΠΎΡΠΎΠ±, ΠΊΠΎΡΠΎΡΡΠΌ ΠΈΠΌΠ΅Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π΅Π΄. ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ΠΌ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ 3 ΡΠΈΠΏΠ° ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ: Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ (static int a;), Π²Π½Π΅ΡΠ½Π΅Π΅ (int a; extern int a;) ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ (typedef, enum).
ΠΠΈΠ΄Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎ ΡΠΈΠΏΡ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ (ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ) Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠ°ΠΌΡΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π° Π²ΡΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ· ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½, ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ±ΡΠ΅ΠΊΡ, ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌΡΠΉ Π² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΠ½ΡΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π΄ΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ½ Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ Π°Π΄ΡΠ΅Ρ. Π ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΌ (multithreaded) ΠΊΠΎΠ΄Π΅ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ².
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠ°ΠΌΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠ»Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π±Π»ΠΎΠΊΠ°. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄ΠΎ Π²ΡΡ ΠΎΠ΄Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ· ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΈΡ Π±Π»ΠΎΠΊΠ°. ΠΠ±ΡΡΠ½ΠΎ Π°Π²Ρ. ΠΏΠ΅ΡΠ΅ΠΌ. ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΡΡΠ΅ΠΊΠ΅.
Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Π°Ρ (Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ) ΠΏΠ°ΠΌΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΡΠ²Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠ°ΠΌΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½Π° (ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ new ΠΈ delete).
ΠΠ»Π°ΡΡ ΠΏΠ°ΠΌΡΡΠΈ (storage class).
ΠΠ»Π°ΡΡ ΠΏΠ°ΠΌΡΡΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΠΆΠΈΠ·Π½ΠΈ ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ) Π² C++. (auto, register, static ΠΈ extern).
Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Π°Ρ ΠΏΠ°ΠΌΡΡΡ Π£Π½Π°ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ new ΠΈ delete ΡΠ»ΡΠΆΠ°Ρ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΡΡ. Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Π°Ρ ΠΏΠ°ΠΌΡΡΡ — ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° new, Π° ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅Ρ Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ delete. ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΊΠΈ ΠΈ Π΄Π΅ΡΠ΅Π²ΡΡ. ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ — ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ new ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΎΡΠΌΡ:
new ΠΈΠΌΡ_ΡΠΈΠΏΠ°.
new ΠΈΠΌΡ_ΡΠΈΠΏΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ
new ΠΈΠΌΡ_ΡΠΈΠΏΠ° [Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅].
3 ΡΡΡΠ΅ΠΊΡΠ°: Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ (Ρ)ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ (Ρ) ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ Π°Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
int *p, *q;
p=new int (5);
q=new int[10];
delete Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
delete [] Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π‘ΡΡΡΠΊΡΡΡΡ ΠΠ°ΡΡΠΈΠ² — Π½Π°Π±ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
Π‘ΡΡΡΠΊΡΡΡΠ° — Π½Π°Π±ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΡΡΠΊΡΡΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ»Π΅Π½ΠΎΠΌ.
struct human{.
char *name;
int age;
}; //ΡΠΎΡΠΊΠ° Ρ Π·Π°ΠΏΡΡΠΎΠΉ ΠΏΠΎΡΠ»Π΅ '}'.
void f (){.
human vova;
vova.name="Vova" ;
vova.age=70;
human piter={" ΠΠ΅ΡΡ", 100};
human *pp=&vova;
pp->age+=1;
}.
ΠΠΌΡ ΡΡΡΡΠΊΡΡΡΡ (human) Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ΅Π³ΠΎΠ²ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΎΠΌ. ΠΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΏΠ° human (vova, piter). ΠΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΡΠΊΡΡΡΡ (ΡΠΌ. ΠΏΡΠΎΠ³.).
ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅Π½Π°ΠΌ ΡΡΡΡΠΊΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ «ΡΠΎΡΠΊΠ°» — «.» (vova.name). ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π²ΠΈΠ΄Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ_ΡΡΡΡΠΊΡΡΡΡ.ΠΈΠΌΡ_ΡΠ»Π΅Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΡΡΡΠΊΡΡΡΡ. Π ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΡΠΈΠΏΠ° ΡΡΡΡΠΊΡΡΡΡ ΡΠ°ΡΡΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° «->» :
ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ_Π½Π°_ΡΡΡΡΠΊΡΡΡΡ->ΠΈΠΌΡ_ΡΠ»Π΅Π½Π° ΠΡΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ.
(*ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ_Π½Π°_ΡΡΡΡΠΊΡΡΡΡ).ΠΈΠΌΡ_ΡΠ»Π΅Π½Π° Π‘ΡΡΡΠΊΡΡΡΠ° — ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ , ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΠΈΠΏ ΡΡΠ΅ΠΊΠ°.
const int max_len=1000;
struct stack{.
int top;
char s[max_len];
};
void reset (stack *stk){stk->top=0;}.
void push (stack *stk, char c){stk->s[stk->top++]=c;}.
char pop (stack *stk){return stk->s[—stk->top]; }.
bool is_empty (const stack *stk){return stk->top==0;}.
bool is_full (const stack *stk){return stk->top==max_len;}.
void use_stack ().
{.
stack s;
char str[]="Using Stack!!!" ;
int i=0;
cout<
reset (&s);
while (str[i]) push (&s, str[i++]);
while (!is_empty (&s))cout<
cout<
// pop (&s);
}.
ΠΠ°ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠ° Π² ΠΏΡΡΠΌΠΎΠΌ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ°Ρ .
ΠΠΠΠ‘Π‘Π« Π C++ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π° Π²ΠΈΠ΄Π° ΡΠΈΠΏΠΎΠ²: Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΈ ΡΠΈΠΏΡ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ: char, int, double. Π’ΠΈΠΏΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: string, vector, istream, CFile, CDialog.
Π‘Π²ΠΎΠΈ ΡΠΈΠΏΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ. ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ Ρ ΠΎΡΠΎΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Ρ, ΡΠΎ ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ.
ΠΠ»Π°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ², ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ struct ΡΠ°ΡΡΠΈΡΠ΅Π½Π° Π² C++ ΡΠ°ΠΊ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ»Π΅Π½Π°ΠΌΠΈ ΡΡΡΡΠΊΡΡΡ. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π΄Π»Ρ ΡΠ»Π΅Π½ΠΎΠ² ΡΡΡΡΠΊΡΡΡΡ. ΠΠ΄Π΅Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ struct, Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΡΡΠΌΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ.
ΠΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ΅ΠΊ: (ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ struct).
struct stack2.
{.
enum{ max_len=100};
int top;
char s[max_len];
void reset ();
void push (char c);
char pop ();
bool is_empty ()const;
bool is_full ()const;
};
void stack2: reset () {top=0;}.
void stack2: push (char c){s[top++]=c;}.
char stack2: pop (){return s[—top]; }.
bool stack2: is_empty ()const {return top==0;}.
bool stack2: is_full ()const {return top==max_len;}.
ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° (top, s) «ΠΊΠ°ΠΊ Π΅ΡΡΡ», Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ.
void use_stack2().
{.
stack2 s;
char str[]="Using Stack!!!" ;
int i=0;
cout<
s.reset ();
while (str[i]).
s.push (str[i++]);
while (!s.is_empty ()).
cout<
cout<
// pop (&s);
}.
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠΏΠ° stack2 ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΡΠ»Π΅Π½Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΠ³ΠΎ (ΡΠ²ΠΎΠ΅Π³ΠΎ) ΠΎΠ±ΡΠ΅ΠΊΡΠ°: ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
stack2 data, operands;//ΡΠΎΠ·Π΄Π°ΡΡΡΡ 2 ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ.
//top ΠΈ s[].
//Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅, Π° ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅.
data.reset ();//data.top=0;
operands.reset ();//operands.top=0;
stack2 *pstack=&operands;
pstack->push ('A');//operands.s[operands.top++]='A'.
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ C++, Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° (Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π°) Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΡΡΡΡΠΊΡΡΡΡ, ΡΠΎ ΠΎΠ½Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ. Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π΅ ΠΎΠ±ΡΡΠ½ΠΎΠΉ, Π½ΡΠΆΠ½ΠΎ Π²ΡΠ½Π΅ΡΡΠΈ Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΡΡΡΠΊΡΡΡΡ, Π° ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΅Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ (ΠΏΡΠΎΡΠΎΡΠΈΠΏ).
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ «:» .
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΠΎΠ½ΡΡΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΎ Π² Π‘++ ΡΠ°ΠΊ, ΡΡΠΎ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π²ΠΎΠ΄ΠΈΡΡ Π·Π°ΠΊΡΡΡΡΠ΅ (private) ΠΈ ΠΎΡΠΊΡΡΡΡΠ΅ (public) ΡΠ»Π΅Π½Ρ. ΠΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ»Π΅Π½ΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ² ΡΡΡΡΠΊΡΡΡΡ.
Π ΠΎΡΠΊΡΡΡΡΠΌ ΡΠ»Π΅Π½Π°ΠΌ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠΌΠ΅Π΅ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΈΠ· Π»ΡΠ±ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΠΌΠ΅ΡΡΠ΅ΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΡΡΠΊΡΡΡΡ.
Π Π·Π°ΠΊΡΡΡΡΠΌ ΡΠ»Π΅Π½Π°ΠΌ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ Π½Π΅ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅, ΡΡΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠΈΠΌ ΡΠ»Π΅Π½Π°ΠΌ. Π’Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΡΡΡΡΠΊΡΡΡ. ΠΡΡΠ³ΠΈΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΠ°Π²ΠΎ, Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΏΠΎΠ·Π΄Π½Π΅Π΅.
struct primer{.
public:
int a; //public member.
double b (int); //public member.
private:
int c; //private member.
double d (int); //private member.
};
double primer: b (int p).
{.
a=7; //ok, can access all members.
b (3); //ok.
c=2; //ok.
return d (1); //ok.
}.
double primer: d (int p).
{.
a=7; //ok, can access all members.
b (3); //ok.
c=2; //ok.
return d (1); //ok.
}.
double use (int p).
{.
primer pr;
pr.a=7; //ok, public member.
pr.b (3); //ok, public member.
// pr. c=2; //error: cannot access private member.
// return pr. d (1);//error: cannot access private member.
return 1;
}.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ primer: c ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ primer: b (), Π½ΠΎ Π½Π΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΠΎΠ»Π΅Π·Π½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π·Π°ΠΊΡΡΡΡΡ ΡΠ°ΡΡΡ, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄, Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ, Π° ΠΎΡΠΊΡΡΡΡΡ ΡΠ°ΡΡΡ — ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π°ΠΊΡΡΡΡΡ ΡΠ°ΡΡΡ, ΠΈ ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ. Π’ΠΎ Π΅ΡΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π°ΠΊΡΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΡΡΡΠΊΡΡΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ (Ρ ΠΎΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ).
Π ΠΎΡΠΊΡΡΡΡΡ ΡΠ°ΡΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ, Π½ΠΎ Π½Π΅ ΡΠ»Π΅Π½Ρ Π΄Π°Π½Π½ΡΡ . Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΊΡΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΠΎΠ±ΡΠ°Π·ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΡΡΡΠΊΡΡΡΡ (ΠΊΠ»Π°ΡΡΠ°). Π Π·Π°ΠΊΡΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈ Π΄Π°Π½Π½ΡΠ΅. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°ΡΡΠΈΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ (ΡΡΡΡΠΊΡΡΡΠΎΠΉ), Π΅Π³ΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΎΡΠΊΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ².
ΠΡΡΠ³ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ — Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΡΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π½Π° Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅Π²Π΅ΡΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ². ΠΠ»Π°ΡΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΡΠΌΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠ°Π²ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π·Π°ΠΊΡΡΡΠΎΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, struct ΠΈ class Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ Π½Π°Π΄Π»Π΅ΠΆΠ°ΡΠ΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠ°Π² Π΄ΠΎΡΡΡΠΏΠ°.
class a{.
int b;//private.
}.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΈΠΏΠ° reset () ΠΈΠ»ΠΈ init () Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° Π½Π΅ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎ ΠΈ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½ΠΎ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π±ΡΡΡ ΠΏΡΠΎΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π΄Π²Π°ΠΆΠ΄Ρ. ΠΡΡΡΠΈΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΈΠΌΠ΅ΡΡΡΡ ΡΠ²Π½ΠΎΠ΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ — ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ²ΠΈΠ΄Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π΅Ρ (ΠΊΠΎΠ½ΡΡΡΡΠΈΡΡΠ΅Ρ) Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΎΠ½Π° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅ΡΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ°.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ — ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΠΊΠ°ΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΡΠ²Π°Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ, Π²Π²Π΅Π΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ².
class stack3.
{.
public:
stack3(); //ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
stack3(char);//stack that contains 1 element.
void push (char c);
char pop ();
bool is_empty ()const;
bool is_full ()const;
private:
enum{ max_len=100};
int top;
char s[max_len];
};
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
void use_stack3().
{.
stack3 s; //Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
stack3 s1('d');//Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ.
stack3 *ps=new stack3();//Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»Ρ.
stack3 *ps1=new stack3('d');//Π²ΡΠΏΠΎΠ»Π½. ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ c 1 Π°ΡΠ³.
delete ps;
delete ps1;
}.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
stack3:stack3():top (0){}.
stack3:stack3(char c)//stack that contains 1 element.
:top (1).
{.
s[0]=c;
}.
Π ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ Π΄Π»Ρ Π²Π°Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΠ΅ΠΆΠ΄Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ «:» ΠΈ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉ ΡΠΈΠ³ΡΡΠ½ΠΎΠΉ ΡΠΊΠΎΠ±ΠΊΠΎΠΉ ({) Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΡΠ΄ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° (constructor initializers), Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ 1 ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π²Π΅Π»ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΡΠ»Π΅Π½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ . Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, top ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π²Π½ΡΠΌ 0. ΠΡΠΎΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΠ½ΠΈΡ.1 ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π²Π°ΠΆΠ½ΠΎ ΡΡΡΠ½ΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°. ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
- 1. C++ - ΡΡΠ΅Π΄Π° Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
- 2. C++ - ΡΡΠ΅Π΄Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
- 3. C++ - ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ΅Π»ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
ΠΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΡΠ΅Π»ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎ Π½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅Π»Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°. ΠΠ±ΡΡΠ½ΠΎ Π»ΡΡΡΠ΅ ΡΠ²Π½ΠΎ Π½Π°Π΄Π΅Π»ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅Π½ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ Π΅ΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅Π»Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°. (ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΌΡ ΠΈΠ·Π±Π΅Π³Π°Π΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ) Π‘ΡΠΎΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ, ΡΡΠΎ ΡΠΌΡΡΠ» ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² ΡΠΎΡΡΠΎΠΈΡ Π² Π³Π°ΡΠ°Π½ΡΠΈΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠΌΠ΅ΡΡΠ΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠΌΡΡΠ» ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
ΠΡΠΈΠΌΠ΅Ρ Ρ 2 ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
class complex{.
complex (double real, double imag);
complex (double real);
};
complex:complex (double real, double imag).
{re=real; im=imag;}.
complex:complex (double real).
{re=real; im=0;}.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅:
complex c3(2,3); //ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π΄Π°ΠΆΠ΅ void).
ΠΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ Π·Π° Π½Π°Ρ. Π‘ΠΈΠ½ΡΠ΅Π·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ»Π΅Π½ΠΎΠ² Π΄Π°Π½Π½ΡΡ -ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π’Π΅ ΡΠ»Π΅Π½Ρ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΠΈΠΏ, Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ (ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΌΡΡΠΎΡ).
ΠΠ΅ΡΡΡΡΠΊΡΠΎΡΡ ΠΠ΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΊΠ»Π°ΡΡΠ°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° (Π΄Π»Ρ Π·Π°ΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°, ΡΠ½ΡΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ Ρ. Π΄.). Π’Π°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌΠΈ. ΠΠΌΡ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ° — ΡΡΠΎ ΠΈΠΌΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Ρ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ «ΡΠΈΠ»ΡΠ΄Π°»:
~stack3(){delete[] s};
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅Π½Ρ Π§Π»Π΅Π½Ρ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ° ΠΏΠ°ΠΌΡΡΠΈ static. Π§Π»Π΅Π½ Π΄Π°Π½Π½ΡΡ , ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠΉ ΠΊΠ°ΠΊ static, ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅. ΠΠ΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅Π½Ρ Π΄Π°Π½Π½ΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° (Ρ.Π΅. ΠΎΠ±ΡΠ΅ΠΊΡΠ°) ΠΊΠ»Π°ΡΡΠ°. ΠΡΠ»ΠΈ Π±Ρ Π½Π΅ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅Π½ΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π²ΡΠ΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌ ΠΊΠ»Π°ΡΡΠ°, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ Π±Ρ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌΠΈ. ΠΡΠΎ ΡΠ°Π·ΠΎΡΠ²Π°Π»ΠΎ Π±Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠΌ. Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅Π½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Ρ Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅Π½ Π΄Π°Π½Π½ΡΡ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΠΊ Π½Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
ΠΈΠΌΡ_ΠΊΠ»Π°ΡΡΠ°: ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΠ΄Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ.
ΠΡΠΈΠΌΠ΅Ρ:
<οΏ½ΡΠ½Π°ΡΠ°Π»Π° how_many_,.
Π·Π°ΡΠ΅ΠΌ how_many (),.
Π·Π°ΡΠ΅ΠΌ const max_len_>
//stat.h.
class stack_stat.
{.
public:
stack_stat ();
~stack_stat ();
bool is_full ()const;
static int how_many ();
private:
static const int max_len_=100;
int top;
char s[max_len_];
static int how_many_;
};
//stat.cpp.
#include «stat.h» .
#include.
int stack_stat:how_many_=0;
stack_stat:stack_stat ():top (0){++how_many_;}.
stack_stat:~stack_stat (){—how_many_;}.
bool stack_stat:is_full ()const {return top==max_len_;}.
int stack_stat:how_many (){return how_many_;}.
//use.cpp.
#include «stat.h» .
#include.
using namespace std;
void use_stack_stat ().
{.
stack_stat *ps=new stack_stat ();
stack_stat s;
// cout<<<' ';
cout<
// ps->~stack_stat ();
char str[]="Using Stack!!!" ;
int i=0;
cout<
while (str[i]).
ps->push (str[i++]);
//*ps=reverse_order (*ps);
while (!ps->is_empty ()).
cout.
cout<
// s. pop ();
delete ps;
cout<
}.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ how_many ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΡΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° stack_stat Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΎ.
Π€ΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΡΠΈΠΏΠ° static ΠΈ const.
C++ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΡΠΈΠΏΠ° static ΠΈ const. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ static, ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠΌΡ ΡΠΈΠΏΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π½ΡΡΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²Π½Π΅ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΡΠΎΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ:
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ ΡΠΈΠΏΠ° const Π²Π²ΠΎΠ΄ΠΈΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ const, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ Π·Π° ΡΠΏΠΈΡΠΊΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π²Π½ΡΡΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²Π½Π΅ ΠΊΠ»Π°ΡΡΠ° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΡΠΎΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ:
ΠΠ±ΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ ΠΌΠΎΠΆΠ΅Ρ ΠΈ ΡΠΈΡΠ°ΡΡ, ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ»Π΅Π½Ρ Π΄Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠΎΠ½ΡΡΠ°Π½ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΡΠ°ΡΡ, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ»Π΅Π½Ρ Π΄Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π’ΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ»Π΅Π½Ρ Π΄Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ°.
ΠΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ³ΠΎ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ Π½Π΅ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π½Π΅ ΡΠ²Π»ΡΡΡΠ΅Π³ΠΎΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
class complex{.
double re, im;
public:
double real ()const{return re;}.
double real_bad_version (){return re;}.
}.
void f (){.
const complex c1(1,0);
complex cx (2,3);
cout<<
cout<
cout<
}.
ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΠ»Ρ ΡΠΈΠΏΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ:
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΡΠΎΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
ΠΠ°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄ΠΎΡΡΡΠΏΠ° (ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΎΠ²). ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠ΅ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ const, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ΠΈ Π²ΡΠ·Π²Π°Π½Ρ.
ΠΠ°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ-ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ². ΠΡΠΈ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² Π΄Π΅ΡΠ°Π»ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄ΠΎΠ»Π³ΠΎ Π΄ΡΠΌΠ°ΡΡ ΠΎ ΡΠΌΡΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅Π½Π° Π΄Π°Π½Π½ΡΡ .
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Ρ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π½ΠΈΠΌ, Π½ΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΡΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π² Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ.
ΠΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ — ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΏΡΠΈΠ²ΡΡΠ½ΡΡ (ΡΠ΄ΠΎΠ±Π½ΡΡ) ΡΠΎΡΠΌΡ Π·Π°ΠΏΠΈΡΠΈ.
class complex{.
public:
complex (double re=0,double im=0).
:_re (re),_im (im){}.
double real ()const{return _re;}.
double imag ()const{return _im;}.
void add (complex);
private:
double _re,_im;
};
complex plus (complex a, complex b);
void print (complex a);
bool operator==(complex a, complex b);//ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π‘ΠΏΠΎΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅:
ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π΅Π³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΡ ΠΎΠ΄Π΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ ΠΎΠ±ΡΡΠ²Π»Π΅Π½.
void f (complex c){complex c1(2,3);}.
ΠΠ±ΡΠ΅ΠΊΡΠ° Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° new ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ delete.
complex *pc=new complex (2,3);
ΠΠ΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ»Π΅Π½Π°-ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΡΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ.
class X{.
complex _c;
stack _s;
public:
X (complex &).
};
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ²-ΡΠ»Π΅Π½ΠΎΠ² ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π½ΠΎΠ² Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΎΠ±ΡΠ΅ΠΌΠ»ΡΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
X:X (complex &c).
:_c©,_s (100)//ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
{}.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΡΠ»Π΅Π½ΠΎΠ² Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΠ΅Π»Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ-ΡΠ»Π΅Π½ Π½Π΅ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°Ρ , Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΡΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ², ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ.
complex cmas[10];
ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
{static complex c=sin (3);}.
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· «Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ» ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°ΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΏΡΠΈ Π΅Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ.
complex c (1,0);
ΠΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΡΡΡ ΠΏΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΡΠ΅Π³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
k=plus (c1,complex (1,2)).imag (); return c1;
ΠΠ±ΡΠ΅ΠΊΡΠ°, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
Π§Π»Π΅Π½Π° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ union, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, Π½ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ°.
union economy{ rec c; double d};
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° ΠΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ 2 Π²ΠΈΠ΄Π° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²:
ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
stack s2=s1;
ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅.
s2=s1;
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΊΠΎΠΏΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠΏΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅Π½Π°. ΠΠΎΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΏΡΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΠ΅ΡΡΡΡΡ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΠ°ΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ/Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° ΡΡΠ΅ΠΊΠ° Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ΅ΠΊΠ° ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅ΠΊΠ°).
ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΠΎ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΠΈΡΠ°Π² Π΄Π»Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ (ΡΠ΅) ΡΡΠ½ΠΊΡΠΈΡ (ΠΈ). ΠΠ»Ρ ΡΠ»ΡΡΠ°Ρ 1) ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π° Π΄Π»Ρ ΡΠ»ΡΡΠ°Ρ 2) — ΠΊΠΎΠΏΠΈΡΡΡΡΠ΅Π΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅.
class stack{.
int cap;
int top;
char *s;//ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΠ·Π΄Π°Π΅Ρ.
//ΡΡΠ΅ΠΊΠΈ-ΡΠΈΠ°ΠΌΡΠΊΠΈΠ΅ Π±Π»ΠΈΠ·Π½Π΅ΡΡ.
public:
stack (int capacity=10):cap (capacity), top (0),.
s (new char[capacity]){}.
~stack (){delete[] s;}.
stack (const stack&);
stack& operator=(const stack&);//returns value for s1=s2=s3;
};
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅:
stack a (100), c;a.push (`a');
stack b=a;Ρ=a;
ΠΠ»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°ΠΊ:
#include //for memcpy.
stack:stack (const stack& st).
:cap (st.cap), top (st.top), s (new char[st.cap]){.
//for (int i=0;i.
memcpy (s, st. s, cap);
}.
stack& stack: operator=(const stack&st){.
if (this≠&st){.
delete[] s;
s=new char[cap=st.cap];
//for (int i=0;i.
memcpy (s, st. s, cap);
top=st.top;
}.
return *this;
}.
ΠΠΎΠΏΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ ΠΊΠΎΠΏΠΈΡΡΡΡΠ΅Π΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ «ΡΠΈΡΡΡΡ» ΠΏΠ°ΠΌΡΡΡ, Π° ΠΊΠΎΠΏΠΈΡΡΡΡΠ΅Π΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ (Π·Π°ΡΠΈΡΠ° ΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΠΌΠΎΠΌΡ ΡΠ΅Π±Π΅, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²).
ΠΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠΈΡΡ Π΄Π²Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΏΠ° double ΠΈ ΡΠ»ΠΎΠΆΠΈΡΡ Ρ ΡΡΠ΅ΡΡΠ΅ΠΉ ΡΠΈΠΏΠ° double, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ:
x+y*z.
ΠΠ»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ cx, cy, cz ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΠΌΠΈ ΡΠ°Π½Π΅Π΅ ΡΠΈΠΏΠ° complex Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠ°ΠΊ:
complex cx, cy, cz;
cy.mul (cz);
cx.add (cy);
ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΌΡ Π·Π°ΠΏΠΈΡΠ΅ΠΌ.
cx+cy*cz.
ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Ρ.ΠΊ. Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ «+» ΠΈ «*» ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ.
ΠΠ΄Π½Π°ΠΊΠΎ C++ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΌΡΡΠ» ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ) Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΠΈΠΏΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
class complex{.
public:
complex operator+(complex);
complex operator*(complex);
private:
double re, im;
};
complex complex: operator +(complex a).
{.
return complex (re+a.re, im+a.im);
}.
complex complex: operator *(complex a).
{.
return complex (re*a.re-im*a.im, re*a.im+im*a.re);
}.
ΠΡΠ»ΠΈ cy ΠΈ cz ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ complex, ΡΠΎ cy+cz ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ cy. operator+(cz).
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π°Π΄ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ Π² ΡΠΎΡΠΌΠ΅, Π±Π»ΠΈΠ·ΠΊΠΎΠΉ ΠΊ ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΠΎΠΉ:
complex c1(r1,i1), c2(r2,i2);
c2=Ρ2+c1*complex (2,3);
Π ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΈ ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ.
ΠΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π·Π°ΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠ΅ ΡΠΌΡΡΠ» ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²:
+ - * / % = += -= *= ++ —, -> [] () new delete.
ΠΈ Π΄ΡΡΠ³ΠΈΡ (Π²ΡΠ΅Π³ΠΎ 42).
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ:
: (ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ).
. (Π²ΡΠ±ΠΎΡ ΡΠ»Π΅Π½Π° ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ).
.* (Π²ΡΠ±ΠΎΡ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ°).
?: (ΡΠ΅ΡΠ½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ) ΠΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, Π½ΠΎ Π½Π΅Π»ΡΠ·Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ** Π΄Π»Ρ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ).
ΠΠΈΠ½Π°ΡΠ½ΡΠ΅ ΠΈ ΡΠ½Π°ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ — ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΠ²Π»ΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Ρ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π±ΡΠ²Π°ΡΡ Π±ΠΈΠ½Π°ΡΠ½ΡΠΌΠΈ (Π΄Π²Π° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°):
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: a+b, a*=b, a.
ΠΈ ΡΠ½Π°ΡΠ½ΡΠΌΠΈ (ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅ΡΠ°Π½Π΄) ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: -a, —a, &a, a++
Π£Π½Π°ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΠ΅ (-a, ++a) ΠΈ ΠΏΠΎΡΡΡΠΈΠΊΡΠ½ΡΠ΅ (a++).
ΠΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ΅ΡΠ½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, a? b:c, Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π΅Π³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π΅Π»ΡΠ·Ρ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ²ΠΎΠΈΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²:
a*b+c>d (((a*b)+c)>d)
ΠΠΎΡΡΠ΄ΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° * Π²ΡΡΠ΅, ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° +.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ (ΠΈΠ»ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ) ΡΠ²ΠΎΠΈ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Ρ
++a, a++, a*=b, a=b
Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ — Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ
a+b, a-b, -a.
ΠΡΠ°Π²ΠΈΠ»Π° ΠΎΠΏΠ΅ΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΠ»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° @ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ aa@bb ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ Π°) Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ Ρ ΠΎΠ΄Π½ΠΈΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ
aa.operator@(bb)
Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ Π±) ΡΡΠ½ΠΊΡΠΈΡ-Π½Π΅-ΡΠ»Π΅Π½ Ρ Π΄Π²ΡΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ
operator@(aa, bb)
ΠΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΎΠ±Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΎ Π΄Π»Ρ Π²ΡΡΡΠ½Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΡΡ ΠΈΠ· Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ (ΡΠΌ. ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΉ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
class X{
public:
void operator+(int);
X (int);
};
void operator+(X, X);
void operator+(X, double);
void f (X a)
{
a+1; //a.operator+(1)
1+a; //:operator+(X (1), a)
a+1.0;//:operator+(a, 1.0)
}
Π£Π½Π°ΡΠ½ΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΠ»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° @ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ @aa ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ Π°) Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²
aa.operator@()
Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ Π±) ΡΡΠ½ΠΊΡΠΈΡ-Π½Π΅-ΡΠ»Π΅Π½ Ρ ΠΎΠ΄Π½ΠΈΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ
operator@(aa)
Π£Π½Π°ΡΠ½ΡΠ΅ ΠΏΠΎΡΡΡΠΈΠΊΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΠ»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠΎΡΡΡΠΈΠΊΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° @ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ aa@ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ Π°) Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΈΠΏΠ° int
aa.operator@(int)
Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ Π±) ΡΡΠ½ΠΊΡΠΈΡ-Π½Π΅-ΡΠ»Π΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°:
operator@(aa, int).
ΠΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΎΠ±Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΎ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΡΡ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΈΠΊΠ°ΠΊΡΡ) ΠΈΠ· Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ. ΠΡΠΈΠΌΠ΅Ρ:
class X{//ΡΠ»Π΅Π½Ρ
X* operator&();//ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΠΉ ΡΠ½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ & (ΡΠ΅ΠΉ-ΡΠΎ Π°Π΄ΡΠ΅Ρ)
X operator&(X); //Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ & (Π)
X operator++(int); //ΠΏΠΎΡΡΡΠΈΠΊΡΠ½ΡΠΉ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ
X operator&(X, X); //ΠΎΡΠΈΠ±ΠΊΠ°: 3 ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°
X operator/(); //ΠΎΡΠΈΠ±ΠΊΠ°: ΡΠ½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ /
};
//ΡΡΠ½ΠΊΡΠΈΠΈ-Π½Π΅-ΡΠ»Π΅Π½Ρ
X operator-(X); //ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΠΉ ΡΠ½Π°ΡΠ½ΡΠΉ ;
X operator-(X, X); //Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ;
X operator—(X&, int); //ΠΏΠΎΡΡΡΠΈΠΊΡΠ½ΡΠΉ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ
X operator-(); //ΠΎΡΠΈΠ±ΠΊΠ°: ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°Π½Π΄
X operator-(X, X, X); //ΠΎΡΠΈΠ±ΠΊΠ°: ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°
X operator%(X); //ΠΎΡΠΈΠ±ΠΊΠ°: ΡΠ½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ %
Π’ΠΈΠΏ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ ΡΠΈΡΠ΅Π» Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ ΡΠΈΡΠ΅Π».
ΠΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°-ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
complex c1,//1
c2(1),
c3=2,
c4(3,4),
c5=complex (5,6);
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π½Π°Π±ΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ²:
class complex{
public:
complex ():re (0), im (0){}//1.0
complex (double real):re (real), im (0){}
complex (double real, double imag):re (real), im (imag){}
private:
double re, im;
}
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΉ (Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ complex). ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ:
complex (double real=0,double imag=0):re (real), im (imag){}//1
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Ρ. ΠΡ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠΌΡ ΡΠΈΡΠ»Ρ Π²ΡΠ³Π»ΡΠ΄Π΅Π»ΠΎ Π² ΡΡΠΈΠ»Π΅ C++:
c1+=c4;//2
c2+=7;
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ +=. Π£ Π½Π°Ρ Π΅ΡΡΡ Π²ΡΠ±ΠΎΡ: ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ Π² ΠΊΠ»Π°ΡΡΠ΅ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ-Π½Π΅-ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ°. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° (re, im), ΡΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ Π² ΠΊΠ»Π°ΡΡΠ΅:
complex& operator+=(const complex& a);//2
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° const complex& a. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ a ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ. ΠΡΠΈ ΡΡΠΎΠΌ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π°Π΄ΡΠ΅Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° (4 Π±Π°ΠΉΡΠ°). ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
complex& operator+=(complex a);
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ a ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ 16 Π±Π°ΠΉΡ). ΠΠΎ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ. ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ: ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ Π΄Π»Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ ΡΡΡΠ»ΠΊΡ, Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ? Π’ΠΎ Π΅ΡΡΡ:
complex& operator+=(const complex *a);
ΠΠΎ Π΄Π΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π°Π½Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ-ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΠΎΠ²Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠ°Π²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ — Π°Π΄ΡΠ΅Ρ, Ρ. Π΅.:
c1+=&c4;
ΠΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ — ΡΡΠΎ Π½Π΅ ΡΠΎ, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΡΡΡΠ»ΠΊΡ.
ΠΠ»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ°
complex& operator+=(double a);//2
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π² .cpp — ΡΠ°ΠΉΠ»Π΅.
complex& complex: operator+=(const complex& a)//2
{
re+=a.re;//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
im+=a.im;//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΈΠΌΠΎΠΉ ΡΠ°ΡΡΠΈ
return *this;//Π²ΠΎΠ·Π²ΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
}
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π²Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ: 1) Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈ 2) Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠΎΠ·Π²ΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½ΡΠΆΠ΅Π½, ΡΡΠΎΠ±Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° += ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Ρ1=(Ρ2+=Ρ3)+7;
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° += Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° (Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ — c2) ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊ Π½Π΅ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΡΠ°Π²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ (Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ c3). ΠΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ complex: operator+=, Π»Π΅Π²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ Π΄Π»Ρ Π½Π΅Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½Π° Π²ΡΠ·Π²Π°Π½Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅ΡΠ½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΠ°Π·ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ this.
ΠΠΎΡΠ΅ΠΌΡ ΠΆΠ΅ ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΡΡΡΠ»ΠΊΡ, Π° Π½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ? ΠΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π΄Π»Ρ ΡΠΈΠΏΠ° int ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ a, Π° Π½Π΅ ΠΊΠΎΠΏΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ a:
(a+=b)++;// ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊ a Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ b, ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ a Π½Π° 1.
ΠΡΠΎ ΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ ΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ Π½Π°ΠΌΠΈ ΡΠΈΠΏΠ° complex, Π° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Π»Π΅Π²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°Π½Π΄.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° += Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°:
complex complex: operator+=(double a){
re+=a;
return *this;
}
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ, Π½Π΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Ρ. Π’Π΅ΠΏΠ΅ΡΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ ΡΠΈΡΠ΅Π» Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΈ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
c1=3+c5;//3
c1=c5+3;
c1=c4+c5;
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ +. ΠΠΏΡΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ Π²ΡΠ±ΠΎΡ: ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π½Π΅-ΡΠ»Π΅Π½-ΠΊΠ»Π°ΡΡΠ°. Π ΠΏΠΎΠ»ΡΠ·Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΅ΡΡΡ Π΄Π²Π° Π΄ΠΎΠ²ΠΎΠ΄Π°. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ-ΡΠ»Π΅Π½-ΠΊΠ»Π°ΡΡΠ° ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π±ΡΠ» Π²ΡΠ·Π²Π°Π½ Π΄Π»Ρ ΡΠ»ΡΡΠ°Ρ 3+c5, Ρ.ΠΊ. Π»Π΅Π²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. ΠΠΎ-Π²ΡΠΎΡΡΡ , Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° complex. ΠΡΠ°ΠΊ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ-Π½Π΅-ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ°:
complex operator+(const complex& a, const complex& b);//3.1
complex operator+(const complex& a, double b);//3.2
complex operator+(double a, const complex& b);
ΠΡΠΈ ΡΡΠΈ ΡΠΎΡΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΡΠΈΡΡΠ²Π°ΡΡ Π²ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠ΅ Π½Π°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ². ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ += Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
complex operator+(const complex& a, const complex& b){
complex r=a;
return r+=b;
}
complex operator+(const complex& a, double b){
complex r=a;
return r+=b;
}
complex operator+(double a, const complex& b){
complex r=b;
return r+=a;
}
Π ΠΎΠΏΡΡΡ, ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ +=, ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ complex Ρ double ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ complex. Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΠΈ Ρ double Π² Π²ΠΈΠ΄Π΅, ΠΏΡΠΈΠ½ΡΡΠΎΠΌ Π΄Π»Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
c2==c4;//4
c2==8;
3==c2;
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ==. ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ +, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ == ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½, Ρ.ΠΊ. ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Π° Π΄Π»Ρ ΡΠ»ΡΡΠ°Ρ 3==Ρ2. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ-Π½Π΅-ΡΠ»Π΅Π½. Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ ΡΠΈΡΠ΅Π»:
bool operator==(const complex& a, const complex& b);//4.2
ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ const ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. ΠΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° (re, im), ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ private: ΠΈ ΠΊ Π½Π΅ΠΌΡ Π½Π΅Π»ΡΠ·Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΈΠ· ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°ΠΏΡΡΠΌΡΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄ΠΎΡΡΡΠΏΠ° Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈ ΠΌΠ½ΠΈΠΌΠΎΠΉ ΡΠ°ΡΡΠ΅ΠΉ:
public:
double real ()const{return re;}
double imag ()const{return im;}
ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ, Π½ΠΎ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΈΠΌ ΡΠ°ΠΌΡΠΌ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΈΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ Π² ΠΌΠ΅ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΏΠΎ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ (ΡΠΎΡ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡ Π΄Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° inline). Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ:
bool operator==(const complex& a, const complex& b){
return a. real ()==b.real ()&&a.imag ()==b.imag ();
}
ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ complex Ρ double ΠΈ double Ρ complex ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅ΡΠ΅ Π΄Π²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ==:
bool operator==(const complex& a, const double& b){
return a. real ()==b && a. imag ()==0;
}
bool operator==(const double& a, const complex& b){
return a==b.real () && 0==b.imag ();
}
Π‘Π»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ΅ ΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΡΠΎ ΠΈ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°==, Π½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΈΠΏΠ° double, Π° Π²ΠΌΠ΅ΡΡΠΎ ΠΌΠ½ΠΈΠΌΠΎΠΉ ΡΠ°ΡΡΠΈ — 0. Π’ΠΎ Π΅ΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ — Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΈΠΏΠ° double, Π° ΠΌΠ½ΠΈΠΌΠ°Ρ ΡΠ°ΡΡΡ ΡΠ°Π²Π½Π° 0. ΠΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΈΠ· Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ°Π±ΠΎΡΡ Π΄Π²ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² == Π²ΠΎΠ·Π»ΠΎΠΆΠΈΡΡ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ==. ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Ρ Π½Π°Ρ ΡΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ — ΡΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ complex, Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΈΠΏΠ° double. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π΄Π²Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ operator== ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ. Π Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΡ ΡΠ°Π±ΠΎΡΠ° Π±ΡΠ»Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΠΏΠ΅ΡΠ²ΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ ==, Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ°ΠΌ Π² Π½ΡΠΆΠ½ΡΡ ΠΌΠ΅ΡΡΠ°Ρ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΡΡΠΎΠ±Ρ ΠΈΠ· double ΠΏΠΎΠ»ΡΡΠΈΡΡ complex. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
c2==c4;//operator==(c2,c4)
c2==8;//operator==(c2,complex (8))
3==c2;//operator==(complex (3), c2)
ΠΠ²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄. Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° ΠΏΡΠΈΠ½ΡΡΡΠΌ Π² C++ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ:
std:cout<
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°:
std:ostream& operator<<(std:ostream& os, const complex& a)
{
return os<<'('<<<','<<<')';
}
Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΠΈΡΡ std: cout<
operator<<(operator<<(operator<<(std:cout, c1), c2), c3);
ΠΠ»Π°ΡΡ Matrix. ΠΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠ»Π°ΡΡΠ° Matrix. ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌΡΠ΅ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ.
class Matrix{
public:
Matrix (size_t, size_t);
Matrix (const Matrix&);
~Matrix ();
private:
size_t d1, d2;
int* m;
};
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² d1 ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΈ d2 ΠΏΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°. Π’ΠΈΠΏ size_t — ΡΡΠΎ ΡΠΈΠΏ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ sizeof. Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, Π° Π±Π°Π·ΠΎΠ²ΡΠΉ Π°Π΄ΡΠ΅Ρ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ m.
Matrix:Matrix (size_t dim1, size_t dim2)
:d1(dim1), d2(dim2), m (new int[size ()]){}
ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ². ΠΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π° ΡΠ°ΠΊΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ: ΠΏΡΠΎΡΡΠΎΡΠ° ΡΠ΄Π°Π»Π΅Π½ΠΈΡ-ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ: Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΡΠΌ. Π½ΠΈΠΆΠ΅).
ΠΠ΅ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ delete[] Π΄Π»Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ new[] Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅.
Matrix:~Matrix (){delete[] m;}
Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ size (), Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°, ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π΅Π΅ Π² ΡΠ°Π·Π΄Π΅Π» private:
private:
size_t size () const {return d1*d2;}
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 2×3 Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Matrix m (2,3);
ΠΡ Ρ ΠΎΡΠΈΠΌ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ Π² ΡΠΈΠΊΠ»Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ:
for (size_t i=0;i
for (size_t j=0;j
m (i, j)=rand ();
ΠΠ΄Π΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ dim1() ΠΈ dim2() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡΠΌ. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΊΠ»Π°ΡΡΠ°:
size_t dim1() const {return d1;}
size_t dim2() const {return d2;}
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΠΎΡΠΌΠ΅ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ — m (i, j). Π ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΏΡΠ°Π²Π° ΠΏΡΠΈΠΏΠΈΡΠ°Π½Ρ ΡΠΊΠΎΠ±ΠΊΠΈ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ m Ρ Π΄Π²ΡΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ (i, j). ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ — ΡΡΠΎ ΡΠΎΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ C++. Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΠΈΡΡ m (i, j) Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π»Π° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΈΡΡ ΡΡΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ. ΠΠΏΠ΅ΡΠ°ΡΠΎΡ (), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ =, [] ΠΈ -> ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π»Π΅Π²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. ΠΠ΅ΡΠ΅Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ():
int& Matrix: operator ()(size_t dd1, size_t dd2){//1
assert (dd1
assert (dd2
return m[dd1*dim2()+dd2];
}
int Matrix: operator ()(size_t dd1, size_t dd2) const{//2
assert (dd1
assert (dd2
return m[dd1*dim2()+dd2];
}
ΠΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π΄Π²Π° ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ const-ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΈ ΡΠΈΠΏΠΎΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π² ΡΠ°Π·Π½ΡΡ ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ·ΡΠ²Π°Π»Π°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°. Π’Π°ΠΊ, ΠΏΡΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΌΠ°ΡΡΠΈΡΡ (ΡΠΌ. Π²ΡΡΠ΅) ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ±Π΅ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°.
Π’Π΅Π»Π° ΠΎΠ±Π΅ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ operator () ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ: Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ m. ΠΠ°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π° Π²ΡΠΎΡΠ°Ρ — Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΠΌΠ΅Π½Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΡΡΠ»ΠΊΠΈ, Π° Π½Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°, Π·Π°ΠΏΠΈΡΡΠ²Π°Ρ m (i, j)=rand ().
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ print, ΠΏΠ΅ΡΠ°ΡΠ°ΡΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π»ΡΠ±ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠΉ Π΅ΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°:
void print (const Matrix& m){
for (size_t i=0;i
for (size_t j=0;j
std:cout<<<',';
}
std:cout<
}
}
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ print ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ print Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΌΠ°ΡΡΠΈΡΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ±Π΅ΡΠ΅Ρ Π²Π΅ΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° () Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ const. ΠΠΎΠ·Π²ΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡΡ Π΄Π΅ΡΠ΅Π²Π»Π΅, ΡΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΡΡΠ»ΠΊΠΈ, Ρ.ΠΊ. ΡΡΡΠ»ΠΊΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ°Π·ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°ΡΡ, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ — Π½Π΅Ρ, Π° ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ² (4 Π±Π°ΠΉΡΠ°).
int* Matrix: operator[](size_t dd1) const{
assert (dd1
return &m[dd1*dim2()];
}
ΠΡΠ·ΠΎΠ²: m[3][4]
(m.operator[](3))[4]
Matrix& Matrix: operator=(const Matrix& t){
if (this≠&t){
delete[] m;
m=new int[(d1=t.dim1())*(d2=t.dim2())];
copy (t);
}
return *this;
}
ΠΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΡΠ΅ΡΠ°ΡΠΎΡΡ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΡΠ·ΡΠΊΠ°. ΠΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. ΠΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π½Π΅ ΡΠ°ΡΠΊΡΡΠ²Π°Ρ Π΅Π³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΡ Π·Π°ΠΏΠΎΠ»Π½ΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² matrix Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ Π·Π°Π½ΡΡΠΈΠΈ:
for (size_t i=0;i
for (size_t j=0;j
m (i, j)=rand ();
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π΄Π²Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»Π°. ΠΡΠΈ ΡΡΠΎΠΌ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π²ΡΠ·ΡΠ²Π°ΡΡ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, Π½Π°ΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΠ°Ρ Π΄ΠΎ dim1() (ΡΡΠΎ i), Π±ΡΠ»Π° ΠΏΠ΅ΡΠ²ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Π² m (i, j), Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, Π½Π°ΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΠ°Ρ Π΄ΠΎ dim2() (Π·Π΄Π΅ΡΡ ΡΡΠΎ j), Π±ΡΠ»Π° Π²ΡΠΎΡΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° — ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΠΌΠ΅Ρ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π²Π΅ Π²Π΅ΡΠΈ:
- Π°) ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ,
- Π±) ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ.
ΠΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΊΠ»Π°ΡΡ Matrix, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΈ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
typedef int* iterator;
iterator begin ()const{return m;}
iterator end ()const{return m+size ();}
Π€ΡΠ½ΠΊΡΠΈΠΈ begin () ΠΈ end () Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ «Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ» ΠΌΠ°ΡΡΠΈΡΡ Π΄Π»Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°. Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ:
for (Matrix:iterator p=m.begin ();p≠m.end ();++p)
*p=rand ();
ΠΠ΄Π΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° p ΠΌΡ
- Π°) ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΡΡΠ΅ΠΌ ΡΠ°Π·ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ,
- Π±) ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Ρ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
Π‘Π»Π΅Π΄ΡΡ ΠΈΠ΄ΠΈΠΎΠΌΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ°, Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠ΅ΡΠ°ΡΠ°ΡΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ:
void print_iter (const Matrix& m){
for (Matrix:iterator p=m.begin ();p≠m.end ();++p)
std:cout<<*p<<',';
}
Π‘Π»Π΅Π΄ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ, ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΠΉ ΡΡ Π΅ΠΌΠ΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ ΠΎΠ±ΡΡΠ½ΡΡ Π»ΠΎΠ²ΡΡΠ΅ΠΊ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΡΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. ΠΠΎ ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ (ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΠΌΠ΅Π½ΡΡΠΈΠΌ Π°Π΄ΡΠ΅ΡΠΎΠΌ) Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°. Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ++p ΠΈΡΠ΅ΡΠ°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ΄ΡΠΈ Π² ΡΡΠΎΡΠΎΠ½Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠ»Π°ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°:
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ Matrix, ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° Matrix
class Matrix{
class reverse_iterator{
public:
reverse_iterator (int *p):_p (p){}
int& operator*(){return *_p;}
void operator++(){—_p;}
bool operator≠(reverse_iterator r) const{return _p≠r._p;}
private:
int *_p;
};
};
Π€ΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° Matrix, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠ΅ Π³ΡΠ°Π½ΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°:
reverse_iterator rbegin ()const{return m+size ()-1;}
reverse_iterator rend ()const{return m-1;}
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
for (Matrix:reverse_iterator r=m.rbegin ();r≠m.rend ();++r)
*r=rand ();
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ: Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΠΎ Π΄Π²Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (begin, end) Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°.
ΠΡΡΠ³Π°Ρ ΠΈΠ΄ΠΈΠΎΠΌΠ° Π΄Π»Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠ°Ρ ΡΡΠΈΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ²:
class m_iter{
public:
m_iter (Matrix& m):_begin (m.m),_end (m.m+m.size ()){}
void First (){_p=_begin;}
bool NotDone ()const{return _p≠_end;}
int& CurrentItem ()const{return *_p;}
void Next (){++_p;}
private:
int *_begin, *_end, *_p;
};
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅:
m_iter mi (m);
for (mi.First ();mi.NotDone ();mi.Next ())
mi.CurrentItem ()=rand ();
ΠΠ΄Π½Π°ΠΊΠΎ ΠΊΠ»Π°ΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°:
class Matrix{
friend class m_iter;
};
ΠΡΡΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ friend (Π΄ΡΡΠ³) ΡΠ»ΡΠΆΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ, ΡΡΠΎΡΠ½ΡΡΡΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ½ΠΎ Π΄Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ-Π½Π΅-ΡΠ»Π΅Π½Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΊΡΡΡΡΠΌ ΡΠ»Π΅Π½Π°ΠΌ ΠΊΠ»Π°ΡΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΡΠΎΠΊΡΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π² C++. ΠΠ΄Π½Π°ΠΊΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²Π΅ΡΠΊΠ°Ρ ΠΏΡΠΈΡΠΈΠ½Π° Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΡΡΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π²Π°ΠΆΠ½Ρ Π΄Π»Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΠΏΡΠΈΡΠΈΠ½ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π² ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΌΠ½ΠΎΠΆΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ Matrix Π½Π° Π²Π΅ΠΊΡΠΎΡ Vector. ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Matrix ΠΈ Vector ΡΠΊΡΡΡΠΎ (private:)
class Matrix;
class Vector{
float v[4];
//…
friend Vector operator*(const Matrix&, const Vector&);
};
class Matrix{
Vector v[4];
//…
friend Vector operator*(const Matrix&, const Vector&);
};
Vector operator*(const Matrix& m, const Vector& v)
{
Vector r;
for (int i=0;i<4;i++){
r.v[i]=0;
for (int j=0;j<4;j++)r.v[i]+=m.v[i]. v[j]*v.v[j];
}
return r;
}
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ — ΡΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ· ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠ»Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΡΠ²Π»ΡΡΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ Π΄ΡΡΠ³ΠΈΡ , ΠΈ ΡΠ°ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΡΡΠΎΠΌΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΊΠΎΠ΄. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°; Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΡΡ ΡΠ»Π΅Π½ΠΎΠ², ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ² ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠ°Π² Π΄ΠΎΡΡΡΠΏΠ°. ΠΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½Π° ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π΅Π·Π½Π° ΡΠ°ΠΊΡΠΎΠ½ΠΎΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ: ΠΈ ΡΠ»ΠΎΠ½ ΠΈ ΠΌΡΡΡ ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡΠ°ΡΡΠΈΠΌΠΈ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡΠ°ΡΡΠΈΠ΅ — ΡΠ΅ΠΏΠ»ΠΎΠΊΡΠΎΠ²Π½ΡΠ΅ Π²ΡΡΡΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΎΡΠ½ΡΠ΅, ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π° Π»ΠΈΡΡ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ — Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ½ΡΡΠΈΠΈ. Π ΠΏΠΎΠ½ΡΡΠΈΡΡ «ΡΠ»ΠΎΠ½» ΠΈ «ΠΌΡΡΡ» Π΄Π°ΡΡΡΡ Π»ΠΈΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΡΠΈΡ ΠΆΠΈΠ²ΠΎΡΠ½ΡΡ .
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΠ»Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌ ΠΎΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠΎΡΠΌΡ:
class ΠΈΠΌΡ_ΠΊΠ»Π°ΡΡΠ°: (public|protected|private)opt ΠΈΠΌΡ_Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ_ΠΊΠ»Π°ΡΡΠ°
{
ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅Π½ΠΎΠ²
};
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ class ΠΊΠ°ΠΊ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ»ΠΎΠ²ΠΎΠΌ struct, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ»Π΅Π½Ρ ΠΎΡΠΊΡΡΡΡ.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° public, protected ΠΈ private ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅Π½Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π±ΡΠ΄ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ. ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ protected — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½Π°Ρ ΡΠΎΡΠΌΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΌΠ΅ΠΆΠ΄Ρ public ΠΈ private.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
//inheritance.h
class employee
{
public:
employee (char *name, double salary);
void print ()const;
private:
char nm[30];
double slry;
};
enum language {ASSEMBLER, BASIC, PASCAL, C, CPP, SMALLTALK};
class programmer1
{
public:
programmer1(char *name, double salary, language lang);
void print ()const;
private:
char nm[30];
double slry;
language lng;
};
class programmer2: public employee
{
public:
programmer2(char *name, double salary, language lang);
void print ()const;
private:
language lng;
};
//inheritance.cpp
#include «inheritance.h»
employee:employee (char *name, double salary)
:slry (salary)
{
strcpy (nm, name);
}
void employee: print ()const
{
cout<<" Name: «<<», Salary: «<<» $" ;
}
programmer1:programmer1(char *name, double salary, language lang)
:slry (salary), lng (lang)
{
strcpy (nm, name);
}
void programmer1: print ()const
{
cout<<" Name: «<<», Salary: «<<» $, Language:" ;
switch (lng){
case C: cout<<" C" ;break;
case CPP: cout<<" C++" ;break;
default:cout<<" Another language" ;break;
}
}
programmer2:programmer2(char *name, double salary, language lang)
:employee (name, salary), lng (lang)
{}
void programmer2: print ()const
{
employee:print ();//ΠΏΠ΅ΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΊΠ΅
// Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ
// print () Π±ΡΠ»Π° Π·Π°ΠΌΠ΅ΡΠ΅Π½Π° Π² programmer2
// ΠΎΡΠΈΠ±ΠΊΠ°:
// cout<<" Name: «<<», Salary: «<<» $, Language:" ;
// Π½Π΅Π»ΡΠ·Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ Π·Π°ΠΊΡΡΡΡΠΌ ΡΠ»Π΅Π½Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°
cout<<", Language:" ;//ΠΏΠ΅ΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΎΡΠ½ΠΎΡΡΡΠ΅ΠΉΡΡ
switch (lng){ // ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ
case C: cout<<" C" ;break;
case CPP: cout<<" C++" ;break;
default:cout<<" Another language" ;break;
}
}
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ programmer2 ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ 1 ΡΠ»Π΅Π½ Π΄Π°Π½Π½ΡΡ lng ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ print (). ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΌΠ΅ΡΠ°Π΅ΡΡΡ, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ², ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΠΌΡΡΠ» ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠΈΠ³Π½Π°ΡΡΡ.
Π Π·Π°ΠΊΡΡΡΡΠΌ ΡΠ»Π΅Π½Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π½Π΅Π»ΡΠ·Ρ. Π’Π°ΠΌ, Π³Π΄Π΅ ΡΡΠΎ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΌΠΈ (protected) ΡΠ»Π΅Π½Π°ΠΌΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π·Π°ΠΊΡΡΡΡΡ . ΠΠ°ΡΠΈΡΠ΅Π½Π½ΡΠΉ ΡΠ»Π΅Π½ Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ ΠΎΡΠΊΡΡΡΡΠΉ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ»Π΅Π½Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ ΠΊΠ°ΠΊ Π·Π°ΠΊΡΡΡΡΠΉ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΠΏΠΈΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅. ΠΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ — Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½ΡΠΆΠ½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°ΡΡ ΡΡ Π΅Π³ΠΎ ΡΠ°ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ.
employee e1(«John», 80), e2(«Ben», 90);
v.print ();p.print ();
programmer1 p1(«Ron», 200, BASIC);
p1.print ();
programmer2 p2(«Michael», 500, C);
p2.print ();
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² programmer1 (Π±Π΅Π· Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ) ΠΈ programmer2 (Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ) Π·Π΄Π΅ΡΡ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° programmer2 ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΡ employee Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΡΠΈΠΏΠΎΠΌ employee. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ programmer2 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌ employee. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
print_in_report (const employee& e){ e. print (); }
print_in_report (e1);
//print_in_report (p1); //error
print_in_report (p2); //OK
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΡΠ΅Π·ΠΊΠ°
employee arr_emp[3]={e1,p2,e2};
mas[0]=v;
// mas[0]=p1;//error
for (int i=0;i<3;++i)mas[i]. print ();
programmer2 p;
employee r=p;//ΡΡΠ΅Π·ΠΊΠ° ΠΠΎΠΏΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ employee-ΡΠ°ΡΡΡ programmer2. ΠΡΠΎΡ ΡΡΡΠ΅ΠΊΡ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΡΠ΅Π·ΠΊΠΎΠΉ. Π§Π°ΡΡΠΎ ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠΌ. ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠ΅Π·ΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
employee *rptr=&r;//Π°Π΄ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΊΠ°
rptr=&p;//Π°Π΄ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°. Π‘ΡΠ΅Π·ΠΊΠ° ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ (Derived* ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Base*)
Π€ΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ (Π·Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Ρ-ΡΠ»Π΅Π½Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ».)
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ (ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»Π΅Π½ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°)
UML
UML ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Unified Modeling Language — ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² Π²ΠΈΠ΄Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ, ΠΎΡΡΠ°ΠΆΠ°ΡΡΠΈΡ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅.
ΠΠΈΠ΄Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ:
- 1. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΏΡΠ΅ΡΠ΅Π΄Π΅Π½ΡΠΎΠ²
- 2. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π²ΠΈΠ΄ΠΎΠ² Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
- 3. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ (ΠΏΠΎΠ΄Π²ΠΈΠ΄ — Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ)
- 4. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΊΠ»Π°ΡΡΠΎΠ²
- 5. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ
- 6. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΈ ΡΠΈΡΡΠ΅ΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ΅Π»ΠΈ, ΡΡΠΎ ΠΈ UML. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ·ΡΠΊ UML ΡΠ΅ΠΉΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π΅-ΡΠ°ΠΊΡΠΎ.
ΠΠ»Ρ ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ·ΡΠΊ UML
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ UML — ΡΠ·ΡΠΊ ΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΡΠ°ΠΌΠΈΠΌ ΡΠΎΠ±ΠΎΠΉ, ΡΠ»Π΅Π½Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ.
ΠΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ Π΄ΡΡΠ³ΠΈΠΌ Π»ΡΠ΄ΡΠΌ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΏΡΠΈΡΠ΅ΠΌ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ UML, ΡΠΎ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΏΡΡΠ°Π½Π½ΡΠΌ ΠΈ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ. Π―Π·ΡΠΊ UML ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ½ΡΠΆΠ΄Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΡΠΊΠΎ ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΈΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·Π»ΠΎΠΆΠΈΡΡ Π² ΠΏΠΈΡΡΠΌΠ΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅).
ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΊΠ»Π°ΡΡΠΎΠ² ΠΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠ»Π°ΡΡΡ ΠΈ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ.
ΠΠ»Π°ΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ Π΄ΠΎ ΡΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
- Β· ΠΠΌΡ ΠΊΠ»Π°ΡΡΠ°
- Β· ΠΠΌΠ΅Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² (ΡΡΠ½ΠΊΡΠΈΠΉ) ΠΊΠ»Π°ΡΡΠ°
- Β· ΠΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΡ -ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠ»Π°ΡΡΠ°
ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ Π·Π½Π°ΠΊΠ°ΠΌΠΈ + public, # protected, — private.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΠΏΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ.
- Β· ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ «is-a» — Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Π²ΠΈΠ΄ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°
- Β· ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ «has-a» — ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° «ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ» ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄Π°Π½Π½ΡΡ .
ΠΠ°ΡΠ΄ΠΈΠ½Π°Π»ΡΠ½ΠΎΡΡΡ (ΠΈΠ»ΠΈ ΠΊΡΠ°ΡΠ½ΠΎΡΡΡ) ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ (employee) ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² (teacher, manager, …):
class teacher: public employee{…};
class manager: public employee{…};
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ (teacher), Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ (Π΄Π»Ρ english_teacher):
class english_teacher: public teacher{…};
Π’Π°ΠΊΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄ Π΄Π΅ΡΠ΅Π²Π° (Π΅ΡΠ»ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅).
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²:
ΠΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ. Π’ΠΈΠΏ programmer2 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ, Ρ ΠΎΡΠΎΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈΠ· employee;
ΠΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ, ΡΠ²ΠΎΠΉΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ;
Π Π°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠ½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΌΡ ΠΊΠΎΠ΄Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ programmer2 Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ΄ΡΠΈΠΏΠ° employee, ΡΡΠΎ ΡΠΏΡΠΎΡΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ΄.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ. Π£ Π½Π°Ρ Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ programmer2:
employee r («Vasya», 80),*pr;
pr=&r;
pr->print ();//employee:print
programmer2 p («Alex», 300, CPP), *pp;
pr=pp=&p;//ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
pp->print ();//programmer2:print
pr->print ();//employee:print
Π’ΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ p ΡΠΈΠΏΠ° programmer2, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π² ΡΠ°ΡΡΠ΅Ρ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ.
ΠΠΎΠ»Ρ ΡΠΈΠΏΠ° ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (programmer2:print ΠΈΠ»ΠΈ employee: print), ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅ΡΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠΌΡ ΡΠΈΠΏΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ?
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π²Π΅ΡΡΠΈ Π² Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΏΠΎΠ»Π΅ ΡΠΈΠΏΠ°, ΡΡΠΎΠ±Ρ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³Π»ΠΈ Π΅Π³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ:
class employee{
public:
enum Rab_type{R, P};
Rab_type type;
employee ():type®{}
void print ()const;
};
class programmer: public employee{
public:
programmer (){type=P;}
void print ()const;
};
void employee: print ()const{
cout<<" employee: print" <
}
void programmer: print ()const{
cout<<" programmer: print" <
}
void print (employee* pr){
switch (pr->type){
case employee: R:
pr->print ();
break;
case employee: P:
const programmer* p=static_cast (pr);
p->print ();
break;
}
}
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΡ employee ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π²Π½Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²ΠΎ Π²ΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ:
Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ employee Π² ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌΡΠΉ ΡΠΈΠΏ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°;
ΠΏΠΈΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ (Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ programmer);
Π² ΡΡΠ½ΠΊΡΠΈΡ: print Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΠ²Ρ.
ΠΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠ»Π΅ΠΌ ΡΠΈΠΏΠ°. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ virtual ΡΠ»Π΅Π²Π° ΠΎΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
class employee_v{
public:
virtual void print ()const;
};
ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ ΠΎΠ±ΡΡΠ½ΠΎΠΉ Π½Π΅Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Π°:
void employee_v:print ()const{
cout<<" employee_v:print" <
}
ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅:
class programmer_v:public employee_v{
public:
virtual void print ()const;
};
void programmer_v:print ()const{
cout<<" programmer_v:print" <
}
ΠΡΠ·ΠΎΠ² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
employee_v r1;
programmer_v p1;
r1.print ();//employee_v:print
p1.print ();//programmer_v:print
Π ΡΡΠΈΡ Π΄Π²ΡΡ ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ·ΠΎΠ²ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ print ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ². Π’Π°ΠΊ Π±ΡΠ»ΠΎ Π±Ρ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ print (Ρ.Π΅. Π±Π΅Π· ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° virtual).
void print_v (employee_v* pr){
pr->print ();//employee_v:print ΠΈΠ»ΠΈ programmer_v:print
}
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ (print) ΠΏΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ pr Π½Π° employee_v. Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π±Ρ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ print Π±ΡΠ»Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° Π½Π΅Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ, ΡΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ Π²ΡΠ·Π²Π°Π»Π°ΡΡ Π±Ρ ΡΡΠ½ΠΊΡΠΈΡ employee_v:print (ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΎΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ). ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ print Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°, Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π»ΠΈΠ±ΠΎ employee_v:print, Π»ΠΈΠ±ΠΎ programmer_v:print, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ pr Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° employee_v Π»ΠΈΠ±ΠΎ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° programmer_v. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
employee_v r1, r2;
programmer_v p1, p2;
print_v (&r1);// employee_v:print
print_v (&p1);// programmer_v:print
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΈ Π²ΡΠ·Π²Π°ΡΡ print_v Π² ΡΠΈΠΊΠ»Π΅:
employee_v *record[4]={&r1,&p1,&r2,&p2};
for (int i=0;i<4;++i){
print_v (record[i]);
}
ΠΡΠ·ΠΎΠ²ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅: employee_v:print, programmer_v:print, employee_v:print, programmer_v:print.
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ print_v Π²ΡΡΠΎΠ΄ΠΈΠ»Π°ΡΡ Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Π° print, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ
for (int i=0;i<4;++i){
record[i]->print ();
}
Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΡ employee ΠΊΠ»Π°ΡΡΠ° Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½ΠΈ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅, Π½ΠΈ Π² ΠΊΠΎΠ΄Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΌ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎΡ ΠΊΠΎΠ΄ — ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΡΠΈΠΊΠ»). ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΡΠΈΠΊΠ» Π±ΡΠ» Π½Π°ΠΏΠΈΡΠ°Π½ ΠΈ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ programmer_v:print Π±ΡΠ» Π²ΠΎΠΎΠ±ΡΠ΅ Π·Π°Π΄ΡΠΌΠ°Π½! ΠΠ°Π½Π½ΡΠΉ ΡΠ°ΠΊΡ ΡΠ»ΡΠΆΠΈΡ ΠΊΡΠ°Π΅ΡΠ³ΠΎΠ»ΡΠ½ΡΠΌ ΠΊΠ°ΠΌΠ½Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΏΡΠΈΠ΄Π°Π΅Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠ΅ΠΉΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ ΠΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° (employee_v) Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ «ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ» Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠΎΠΌ. Π’ΠΈΠΏ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ. ΠΠ»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π² C++ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ, ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΡΠ»ΠΊΠΈ ΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ. ΠΡΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ (Π±Π΅Π· ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΡΡΠ»ΠΊΠΈ) Π΅Π³ΠΎ ΡΠΎΡΠ½ΡΠΉ ΡΠΈΠΏ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ.
ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΡ ΠΎΠΆΠΈ Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ employee_v Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ (employee_v Ρ ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΠΌΠ΅Π½ΠΈ ΠΈ ΡΡΠ°Π²ΠΊΠ΅ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΊΠ° ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅), ΡΠ°ΠΊ ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·Ρ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² (programmer_v ΠΈ Π΄ΡΡΠ³ΠΈΡ ). ΠΠ»Ρ ΡΠ°ΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ (Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ), ΡΠ²Π»ΡΡΡΡΡ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ Π²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΠ°ΠΊΠΎΠΌΡ ΠΎΠ±ΡΠ°Π·ΡΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ»Π°ΡΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ figure, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ»Π°ΡΡ figure ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·Ρ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ².
class figure{
public:
void move_to (int x, int y){_x=x; _y=y;}
virtual void draw (HDC);
virtual void rotate (double);//angle measured in degrees
protected:
figure (int x, int y):_x (x),_y (y){}
int _x,_y;
};
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠ΅ ΠΎΡ figure ΠΊΠ»Π°ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅Π½Ρ Π΄Π°Π½Π½ΡΡ .
class circle: public figure{
public:
circle (int x, int y, int r)
:figure (x, y),_r®{}
virtual void draw (HDC);
virtual void rotate (double){};
private:
int _r;
};
class line: public figure{
public:
line (int x0, int y0,
int x1, int y1)
:figure (x0,y0),_dx (x1-x0),_dy (y1-y0)
{}
virtual void draw (HDC);
void rotate (double);
private:
int _dx,_dy;
};
ΠΠ»Ρ figure Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΡΠΌΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
void figure: draw (HDC){
assert (false);//ΡΡΠΎΡ ΠΊΠΎΠ΄ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½
}
void figure: rotate (double){
assert (false);//ΡΡΠΎΡ ΠΊΠΎΠ΄ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½
}
ΠΠΎΠΏΡΡΠΊΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΈΠ³ΡΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°, Π½ΠΎ Π½Π΅ΡΠ°Π·ΡΠΌΠ½Π°:
figure f1(200,200);//ΡΠΈΠ³ΡΡΠ° Ρ ΡΠ΅Π½ΡΡΠΎΠΌ, Π½ΠΎ Π±Π΅Π· ΡΠΎΡΠΌΡ
circle c1(100,100,10);
line l1(120,100,130,105);
figure* mas[2]={&c1,&l1};
for (int i=0;i<2;++i){
mas[i]->draw (hdc);
mas[i]->move_to (100,110);
mas[i]->draw (hdc);
mas[i]->move_to (100,140);
mas[i]->rotate (40);
mas[i]->draw (hdc); }
ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΠΈΠ΄Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ: ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ.
Π¨Π°Π±Π»ΠΎΠ½Ρ Π C++ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ template ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ°. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΊ ΡΠ°Π·Π½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ, ΠΏΡΠΈΡΠ΅ΠΌ ΡΠΈΠΏ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΠ΅Π»Π° ΠΊΠΎΠ΄Π°.
ΠΠΎΠΏΡΡΡΠΈΠΌ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡ stack3, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΡΠ΅ΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (char).
class stack3
{
public:
stack3();
void push (char c);
char pop ();
bool is_empty ()const;
bool is_full ()const;
private:
enum{ max_len=100};
int top;
char s[max_len];
};
Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
stack3:stack3():top (0){}
void stack3: push (char c){
assert (top
s[top++]=c;
}
char stack3: pop (){
assert (top>0);
return s[—top];
}
bool stack3: is_empty ()const {return top==0;}
bool stack3: is_full ()const {return top==max_len;}
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
stack3 reverse_order (stack3 s){
stack3 tmp;
while (!s.is_empty ()){
tmp.push (s.pop ());
}
return tmp;
}
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΊΠ»Π°ΡΡΠ°:
template class stack4
{
public:
stack4(); //ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ
void push (T c);
T pop ();
bool is_empty ()const;
bool is_full ()const;
private:
enum{ max_len=100};
int top;
T s[max_len];
};
templatestack4:stack4():top (0){}
templatevoid stack4: push (T c){
assert (top
s[top++]=c;
}
templateT stack4: pop (){
assert (top>0);
return s[—top];
}
templatebool stack4: is_empty ()const {return top==0;}
templatebool stack4: is_full ()const
{return top==max_len;}
ΠΡΠ΅ΡΠΈΠΊΡ template ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΡΠ°Π±Π»ΠΎΠ½ (template), ΠΈ ΡΡΠΎ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π½Π° ΠΌΠ΅ΡΡΠ΅ T Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·Π°Π½ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΏ. T — ΠΈΠΌΡ ΡΠΈΠΏΠ°, Π° Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΠΌΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΊΠ»Π°ΡΡΠ°, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΈΠΏ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ Π² ΡΠ³Π»ΠΎΠ²ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ° (ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π°) ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π° Π΄ΡΡΠ³ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ²:
stack4 sc;
stack4 si;
stack4 sd;
ΠΠ΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΠΏΠΈΡΠ°ΡΡ ΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π±Π»ΠΎΠ½Π° — ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π°.
Π€ΡΠ½ΠΊΡΠΈΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ°Ρ ΡΠΎ ΡΡΠ΅ΠΊΠΎΠΌ stack4:
stack4 reverse_order (stack4 s){
stack4 tmp;
while (!s.is_empty ()){
tmp.push (s.pop ());
}
return tmp;
}
Π¨Π°Π±Π»ΠΎΠ½ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Ρ Π»ΡΠ±ΡΠΌ ΡΡΠ΅ΠΊΠΎΠΌ:
template STACK reverse_order (STACK s){
STACK tmp;
while (!s.is_empty ()){
tmp.push (s.pop ());
}
return tmp;
}
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ² Π‘Π»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠ²ΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠ»Π°ΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
stack4 sc;//Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ 5 ΡΡΠ½ΠΊΡΠΈΠΉ
stack4 si1, si2;// Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ 5 ΡΡΠ½ΠΊΡΠΈΠΉ
//(ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π΅ ΠΈΠ³ΡΠ°Π΅Ρ ΡΠΎΠ»ΠΈ)
stack4 sd;//Π½Π΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ stack4 ΡΠΆΠ΅ Π±ΡΠ»ΠΎ Π²ΡΡΠ΅ Π Π½Π°ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ stack ΡΡΠ½ΠΊΡΠΈΠΈ push ΠΈ pop Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ°Π±Π»ΠΎΠ½Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. Π’Π°ΠΊ, ΡΡΠ½ΠΊΡΠΈΡ push, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° char, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ push, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° int. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ is_empty ΠΈ is_full ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ°Π±Π»ΠΎΠ½Π° Π½Π΅ Π·Π°Π²ΠΈΡΡΡ. Π€ΡΠ½ΠΊΡΠΈΡ is_empty Π΄Π»Ρ char Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΠΈ is_empty Π΄Π»Ρ int. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΡΠ½ΠΈΡ (ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΡ ) ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠ΅ΠΌ. Π¨Π°Π±Π»ΠΎΠ½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌ ΠΎΡ ΠΊΠ»Π°ΡΡΠ°, Π½Π΅ ΡΠ²Π»ΡΡΡΠ΅Π³ΠΎΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ. ΠΡΠΈ ΡΡΠΎΠΌ Π² Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π΅ Π·Π°Π²ΠΈΡΡΡΠΈΠ΅ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ°Π±Π»ΠΎΠ½Π°.
ΠΡΠΈΠΌΠ΅Π½ΠΈΠΌ Π΄Π°Π½Π½ΡΠΉ ΠΏΡΠΈΠ΅ΠΌ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΡΠ΅ΠΊΠ°:
class stack5_base
{
public:
stack5_base ();
bool is_empty ()const;
bool is_full ()const;
protected:
enum{ max_len=100};
int top;
};
stack5_base:stack5_base ()
:top (0)
{}
bool stack5_base:is_empty ()const {return top==0;}
bool stack5_base:is_full ()const {return top==max_len;}
template class stack5: public stack5_base
{
public:
void push (T c);
T pop ();
private:
T s[max_len];
};
templatevoid stack5: push (T c){
assert (top
s[top++]=c;
}
templateT stack5: pop (){
assert (top>0);
return s[—top];
}
ΠΠ»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ»ΡΡΠ°Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ:
//ΠΊ ΡΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΎ 3 ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ stack5_base
stack5 sc;//Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ 2 ΡΡΠ½ΠΊΡΠΈΠΈ
stack5 si1, si2;// Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ 2 ΡΡΠ½ΠΊΡΠΈΠΈ
//(ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π΅ ΠΈΠ³ΡΠ°Π΅Ρ ΡΠΎΠ»ΠΈ)
stack5 sd;//Π½Π΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ stack4 ΡΠΆΠ΅ Π±ΡΠ»ΠΎ Π²ΡΡΠ΅ Π¨Π°Π±Π»ΠΎΠ½Ρ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ-Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π ΡΠ°Π±Π»ΠΎΠ½Π°Ρ stack3 ΠΈ stack4 Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² Π½Π° 100 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎ, ΠΈ ΠΏΠ°ΠΌΡΡΡ ΡΠ°ΡΡ ΠΎΠ΄ΡΠ΅ΡΡΡ Π½Π΅ΡΠ°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈ ΡΠΎΠ³Π΄Π° ΡΠ°Π±Π»ΠΎΠ½Ρ stack3 ΠΈ stack4 Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ. ΠΠ°ΠΊ ΠΆΠ΅ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΎΠ½ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΈΡΠ°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½? ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅) Π΄Π²ΡΠΌΡ ΠΏΡΡΡΠΌΠΈ.
ΠΠ΅ΡΠ²ΡΠΉ (ΡΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ Π²Π°ΠΌ) — ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΄Π΅Π»ΡΡΡ ΠΏΠ°ΠΌΡΡΡ (Π° Π² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡ). ΠΡΠΈ ΡΡΠΎΠΌ Π·Π°ΡΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π²ΡΠ΅ΠΌΡ Π½Π° Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅/ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΡΠΎΡΠΎΠΉ ΠΏΡΡΡ — ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°Π±Π»ΠΎΠ½ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ ΡΠ°Π±Π»ΠΎΠ½ stack4 Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ. ΠΡΠΈ ΡΡΠΎΠΌ Π΄Π»Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ΅Ρ Π½ΠΈΠΊΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅:
class stack6_base
{
public:
stack6_base ();
bool is_empty ()const;
protected:
int top;
};
stack6_base:stack6_base ()
:top (0)
{}
bool stack6_base:is_empty ()const {return top==0;}
template class stack6_n:public stack6_base
{
public:
bool is_full ()const;
};
template bool stack6_n:is_full ()const {return top==N;}
template class stack6: public stack6_n
{
public:
void push (T c);
T pop ();
private:
T s[N];
};
template void stack6: push (T c){
assert (top
s[top++]=c;
}
template T stack6: pop (){
assert (top>0);
return s[—top];
}
ΠΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
stack6 sc;//ΡΡΠ΅ΠΊ char Π½Π° 100 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
stack6 si1, si2;//ΡΡΠ΅ΠΊ int Π½Π° 10 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
stack6 sd;//ΡΡΠ΅ΠΊ char Π½Π° 5 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π‘Π»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ°Π±Π»ΠΎΠ½ ΡΡΠ½ΠΊΡΠΈΠΈ reverse_order, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅, Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ stack6:
reverse_order (sΡ);
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΠΈ ΠΎΠ΄Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΈΠ»ΠΈΡΠ½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π½Π΅ ΠΏΠΈΡΠ΅ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ «Π³ΠΎΠ»ΡΡ » ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ°. ΠΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π³ΠΎΡΠΎΠ²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΠΊΠΎΠ΄, ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡΠΈΠΉ ΡΠ°Π±ΠΎΡΡ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅Π»Π΅ΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° MFC ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Win32 ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ «ΡΠΈΡΡΡΠΌ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄ Win32 API. Win32 API ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊ Windows, Π° MFC — ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ. ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Borland ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π»Ρ ΡΠ΅Ρ ΠΆΠ΅ ΡΠ΅Π»Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ OWL.
C Run-Time Library — ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ° Π±ΠΈΠ±ΠΈΠ»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»Π°ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π²Π½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½Π° ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π° Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ C (ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΡ). Π’Π°ΠΊ ΠΊΠ°ΠΊ C++ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ C, ΡΠΎ C Run-Time Library ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π² C+±ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ . Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΡΠΎΠΉ Π±ΠΈΠ±ΠΈΠ»ΠΈΠΎΡΠ΅ΠΊΠΈ (Π² ΡΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² Microsoft Visual Π‘++) ΡΠ°Π·Π±ΠΈΡΡ Π½Π° 19 ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ, ΡΡΠ΅Π΄ΠΈ ΠΊΠΎΡΠΎΡΡΡ :
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ ΡΠΏΠΈΡΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²;
Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ (malloc, calloc ΠΈ Π΄Ρ.);
ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ° (exec, exit);
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΏΠ°ΠΌΡΡΡΡ (memcpy, …);
ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (isalpha);
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ (atoi, _itoa, tolower);
ΠΎΡΠ»Π°Π΄ΠΊΠ° (_ASSERT, _CrtCheckMemory);
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌΠΈ (_chdir);
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ (_filelength);
ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ (sin, cos, abs, floor, ldexp (mant, exponent));
Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΠΉ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ (getc, fwrite)
Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ (_open, _write)
Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ Ρ/Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΈ ΠΈΠ·/Π² ΠΏΠΎΡΡ (_cprintf, _inp)
Π²ΡΠ΅ΠΌΡ ΠΈ Π΄Π°ΡΠ° Π² ΡΡΠΈΠ»Π΅ C (clock, difftime)
Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ (bsearch, qsort)
ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΡΡΠΈΠ»Π΅ Π‘
ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°Π΄ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ Π² ΡΡΠΈΠ»Π΅ C (strcmp, strcpy) ,
Π§Π°ΡΡΡ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° ANSI ΠΈ POSIX, ΡΠ°ΡΡΡ — Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Microsoft (Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ).
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² ΡΡΠ°Π½Π΄Π°ΡΡ C++.
ΠΠ½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°Π±ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»Π°ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π‘ΡΡΠΎΠΊΠΈ ΠΈ ΠΏΠΎΡΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°;
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ vector, list ΠΈ map) ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ (ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°, ΡΠ»ΠΈΡΠ½ΠΈΠ΅, ΠΏΠΎΠΈΡΠΊ ΠΈ Π΄Ρ.)
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠ°ΡΡΠ΅ΡΠΎΠ² (ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°, Π²Π΅ΠΊΡΠΎΡΠ° Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ ΠΈ Π΄Ρ.)
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° C (ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ, ΡΠ°Π±ΠΎΡΠ° Ρ C-ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ Π΄Ρ.)
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ΅Π΄ΡΡΠ² ΡΠ·ΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ Π΄Ρ.)
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ std. ΠΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠΎΡΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ std, Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ using namespace std; (Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΡΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½).
ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ, Π° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ² —. ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π°Π½ Π² [Π‘ΡΡΠ°ΡΡΡΡΡΠΏ].
ΠΠ²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ Π’ΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» — .
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΡΠ²ΠΎΠ΄Π° — cin, Π²Π²ΠΎΠ΄Π° — cout. ΠΠ²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π΄Π»Ρ Π²ΡΠ΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ Π² ΠΏΠΎΡΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² <> ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π²Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ: ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΈ Π²ΡΠ²ΠΎΠ΄ ΡΡΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄Π°.
void f (){
cout<<10<<13.7<<οΏ½"abcd";
double d; int i;
cin>>d>>i;
}
ΠΠ΄Π΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²: 1,0,1,3,., 7, a, b, c, d.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ << ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²ΠΈΡΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ.
ΠΠ²ΠΎΠ΄ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ >>. Π’ΠΈΠΏ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° Π² Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ± ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΡΠΎ, ΠΊΡΠ΄Π° Π±ΡΠ΄ΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π²Π²ΠΎΠ΄Π° — cin.
ΠΠΎΠ³Π΄Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ΡΠΎΡΠΌΠ°ΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° put ΠΈ get.
cout.put ('s');
char ch;
cin.get (ch);
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
Π§Π°ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΡΠ΅Π» (ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΡΠΎΡΠ½ΠΎΡΡΡ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ ΠΈ Π΄Ρ.)
cout<<123.4567;
cout.setf (ios_base:showpos);
cout<<123.4567<<<123.4567;
Π‘ΡΡΠΎΠΊΠΈ Π ΡΡ. Π±ΠΈΠ±Π». ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΈΠΏ string, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΠ΅ΡΡ ΡΠ°Π½Π΅Π΅. Π’ΠΈΠΏ string ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ.
string s1="Hello", s2="world" ;
string s3=s1+", «+s2+'!';
cout<
Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (+) ΡΡΡΠΎΠΊ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ. ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ, ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠΌ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ. ΠΠΏΠ΅ΡΠ°ΡΠΎΡ += Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ ΡΡΡΠΎΠΊΠΈ:
s3+=' ';
Π‘ΡΡΠΎΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΠΈ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌΠΈ Π»ΠΈΡΠ΅ΡΠ°Π»Π°ΠΌΠΈ:
if (s1==s2){ }
if (s3=="ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!"){ }
ΠΡΡΠ³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
string s4=s3.substr (0,4);//Π²Π·ΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ
s4.insert (0," Road to «);//Π²ΡΡΠ°Π²ΠΊΠ°
s4.replace (s4.find («Hell»), 4," Heaven");//ΠΏΠΎΠΈΡΠΊ ΠΈ Π·Π°ΠΌΠ΅Π½Π°
TextOut (hdc, 1,1,s4.c_str (), s4. size ());//ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² C-ΡΡΡΠΎΠΊΡ ΠΈ ΡΠΈΡΠ»ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΡΡΠΎΠΊΠΈ Π’ΠΎΠ³ΠΎ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ C-ΡΡΡΠΎΠΊΠΈ, Π½ΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΎ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ ΡΡΡΠΎΠΊΠΈ string ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΠ»Π°ΡΡ, Π³Π»Π°Π²Π½ΠΎΠΉ ΡΠ΅Π»ΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΡ Π½ΡΠΆΠ½ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ — Π²Π°ΠΆΠ½Π΅ΠΉΡΠΈΠ΅ ΡΠ°Π³ΠΈ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ΅ΠΊΡΠΎΡ Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ
string
vector
list
ostream, istream, ofstream, ifstream, ostringstream.
ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΠΎΠ½ΡΡΠΈΡ — ΠΎΠ±ΡΠ΅ΠΊΡΡ — ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ — Π°ΡΡΠΈΠ±ΡΡΡ — ΠΊΠ»Π°ΡΡΡ — ΠΌΠ΅ΡΠΎΠ΄Ρ — ΠΎΠ±ΡΠ½ΠΎΡΡΡ (Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅).
ΠΡΠ°Π²ΠΈΠ»Π° ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Ρ ΠΎΡΠΎΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΡΠ·ΡΠΊΡ.
ΠΡΠΈΠΌΠ΅Ρ. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ Π΄Π»Ρ C++ ΠΈΠ· [5]:
- Β· ΠΠ΅Π·Π΄Π΅, Π³Π΄Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ const.
- Β· ΠΠ»Ρ ΠΊΠ»Π°ΡΡΠΎΠ² Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΠΉΡΠ΅ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ.
- Β· ΠΡΠΊΠ»Π°Π΄ΡΠ²Π°ΠΉΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°.
- Β· Π’ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π΄ΡΠΌΡΠ²Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
- Β· Π£ΠΌΠ΅Π½ΡΡΠ°ΠΉΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
- Β· ΠΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π [5]ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΡΡ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π²ΡΠ³ΠΎΠ΄Ρ ΠΎΡ ΠΏΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ».
ΠΠ°ΡΡΠ΅ΡΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. (Design Patterns)
ΠΡΡΠ³ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ — ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Π½Π΅ ΠΏΡΡΠ°ΡΡ Ρ template).
ΠΠΎΠ΄ ΠΏΠ°ΡΡΠ΅ΡΠ½Π°ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠΈ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ. ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Document-View Π² MFC.
Document Ρ ΡΠ°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π° View (ΠΠΈΠ΄) ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π½Π° ΡΠΊΡΠ°Π½Π΅. ΠΠ΅ΠΆΠ΄Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΈ Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΎΠΌ Π² MFC ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ «ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ°/ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠ΅». ΠΠΈΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ Π²Π½Π΅ΡΠ½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΎΠΏΠΎΠ²Π΅ΡΠ°Π΅Ρ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΡΡΠΈΠ΅ ΠΎΡ Π½Π΅Π³ΠΎ Π²ΠΈΠ΄Ρ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ Π²ΠΈΠ΄ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠ΅Π±Ρ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ΠΎΠ², ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ² ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ Π²ΠΈΠ΄, Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ.
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ² ΠΈΠ· [6].
- Β· FaΠ·ade (Π€Π°ΡΠ°Π΄) ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
- Β· Adapter (ΠΠ΄Π°ΠΏΡΠ΅Ρ) ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠ»Π°ΡΡΠ° Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π΄Π»Ρ Π½ΡΠΆΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
- Β· ΠΡΠ΅ΡΠ°ΡΠΎΡ