struct s { int a; }
void g()
{
struct* s p = new s; // ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ `s'
p-βΊa = 1;
}
ΠΠΌΡ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ. ΠΡΡΡΠ΄Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ
class A * A;
A Π² Π½Π°ΡΠ°Π»Π΅ Π·Π°Π΄Π°Π΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΈΠΌΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ-ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° class A. Π’Π°ΠΊΠΎΠ΅ "ΡΡΡΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ" Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ Π½Π΅Π΄ΠΎΡΠΌΠ΅Π½ΠΈΠ΅, ΠΈ Π»ΡΡΡΠ΅ Π΅Π³ΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈΠΌΡ-typedef (Β§R.7.1.3) ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ ΠΈ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ-ΠΊΠ»Π°ΡΡΠ°, ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅ Β§R.7.1.3.
R.9.2 Π§Π»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ°
ΡΠΏΠΈΡΠΎΠΊ-ΡΠ»Π΅Π½ΠΎΠ²:
ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅-ΡΠ»Π΅Π½Π° ΡΠΏΠΈΡΠΎΠΊ-ΡΠ»Π΅Π½ΠΎΠ² opt
ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ-Π΄ΠΎΡΡΡΠΏΠ° : ΡΠΏΠΈΡΠΎΠΊ-ΡΠ»Π΅Π½ΠΎΠ² opt
ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅-ΡΠ»Π΅Π½Π°:
ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ-ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ opt ΡΠΏΠΈΡΠΎΠΊ-ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ-ΡΠ»Π΅Π½ΠΎΠ² opt ;
ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅-ΡΡΠ½ΠΊΡΠΈΠΈ ; opt
ΡΡΠΎΡΠ½Π΅Π½Π½ΠΎΠ΅-ΠΈΠΌΡ ;
ΡΠΏΠΈΡΠΎΠΊ-ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ-ΡΠ»Π΅Π½ΠΎΠ²:
ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ-ΡΠ»Π΅Π½Π°
ΡΠΏΠΈΡΠΎΠΊ-ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ-ΡΠ»Π΅Π½ΠΎΠ² , ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ-ΡΠ»Π΅Π½Π°
ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ-ΡΠ»Π΅Π½Π°:
ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ-ΡΠΈΡΡΠΎΠΉ opt
ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ opt : Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅-ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°
ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ-ΡΠΈΡΡΠΎΠΉ:
= 0
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠΏΠΈΡΠΎΠΊ-ΡΠ»Π΅Π½ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ»Π°ΡΡΡ, ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ (Β§R.7.2), Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ, Π΄ΡΡΠ·Π΅ΠΉ (Β§R.11.4) ΠΈ ΠΈΠΌΠ΅Π½Π° ΡΠΈΠΏΠΎΠ² (Β§R.7.1.3, Β§R.9.1). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΏΠΈΡΠΎΠΊ-ΡΠ»Π΅Π½ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΠΈΠ΅ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ ΡΠ»Π΅Π½ΠΎΠ², ΡΠΌ. Β§R.11.3. ΠΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠ»Π΅Π½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ ΠΎΠΏΠΈΡΠ°Π½ Π² ΡΠΏΠΈΡΠΊΠ΅-ΡΠ»Π΅Π½ΠΎΠ². Π‘ΠΏΠΈΡΠΎΠΊ-ΡΠ»Π΅Π½ΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅Π½ΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Ρ.Π΅. Π½Π΅Π»ΡΠ·Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅Π½ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ.
ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠΌΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ² ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΈΡ ΡΠΈΠΏΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° (Β§R.13). Π£ΠΊΠ°ΠΆΠ΅ΠΌ, ΡΡΠΎ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ-ΡΠ»Π΅Π½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ° (Β§R.8.4). ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, ΡΠΌ. Β§R.12.1.
Π§Π»Π΅Π½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ auto, extern ΠΈΠ»ΠΈ register.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ-ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠΏΠΈΡΠΎΠΊ-ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ-ΡΠ»Π΅Π½ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ-ΠΊΠ»Π°ΡΡΠ°, ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ-ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ-ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄ friend ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ-ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ-ΡΠΈΠΏΠ°. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ-ΡΠΈΡΡΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ (Β§R.10.2).
ΠΡΠ»ΠΈ ΡΠ»Π΅Π½Ρ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΎ ΡΡΠΈ ΠΊΠ»Π°ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°Π½Π΅Π΅ ΠΎΠΏΠΈΡΠ°Π½Ρ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΊΠ»Π°ΡΡ C1 Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° C1, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΊΠ»Π°ΡΡ C1. ΠΡΠ»ΠΈ Π² ΡΠΈΠΏΠ΅ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ»Π΅Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ², ΡΠΎ Π²ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ Π²ΡΠ΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Ρ.
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°:
struct tnode {
char tword[20];
int count;
tnode *left;
tnode *right;
};
ΠΠ΄Π΅ΡΡ ΠΊΠ»Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· Π΄Π²Π°Π΄ΡΠ°ΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠ΅Π»ΠΎΠ΅ ΠΈ Π΄Π²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡ ΠΆΠ΅ ΡΡΡΡΠΊΡΡΡΡ. ΠΠΎΡΠ»Π΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
tnode s, *sp;
Π·Π°Π΄Π°Π΅Ρ s ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° tnode ΠΈ sp ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° tnode. Π‘ ΡΡΠ΅ΡΠΎΠΌ ΡΡΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ s-βΊcount ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ»Π΅Π½ count ΡΡΡΡΠΊΡΡΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ sp; s.left ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ left Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ ΡΡΡΡΠΊΡΡΡΡ s; s.right-βΊtword[0] ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΡΠ»Π΅Π½Π° tword ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²Π° ΡΡΡΡΠΊΡΡΡΡ s, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ right.
ΠΠ΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ΡΡΠ΄ ΠΈ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ-Π΄ΠΎΡΡΡΠΏΠ°, ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π²Π½ΡΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° ΠΊΠ»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎ ΠΏΠΎΠ·ΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΡΠ»Π΅Π½Ρ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π°Π΄ΡΠ΅ΡΠ°. ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ ΡΠ»Π΅Π½ΠΎΠ², Π΅ΡΠ»ΠΈ ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΠΆΠ°Π΅ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠΌΠΈ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ-Π΄ΠΎΡΡΡΠΏΠ°, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Β§R.11.1). ΠΡΠΈΠ½ΡΡΡΠ΅ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π΄Π²Π° ΡΠΎΡΠ΅Π΄Π½ΠΈΡ ΡΠ»Π΅Π½Π° Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΡΡΠ°Π·Ρ Π΄ΡΡΠ³ Π·Π° Π΄ΡΡΠ³ΠΎΠΌ. Π ΡΡΠΎΠΌΡ ΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ (Β§R.10.2) ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² (Β§R.10.1); ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅ Β§R.5.4.
Π€ΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ (Β§R.9.3), ΠΈΠΌΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ°, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ (Β§R.12.1). ΠΠΌΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ»Π΅Π½Π° Π΄Π°Π½Π½ΡΡ , ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΡΠ»Π΅Π½Π° Π±Π΅Π·ΡΠΌΡΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ°.
R.9.3 Π€ΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ
Π€ΡΠ½ΠΊΡΠΈΡ, ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ ΠΊΠ°ΠΊ ΡΠ»Π΅Π½ (Π±Π΅Π· ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ friend Β§R.11.4), Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ ΡΠ»Π΅Π½Π° ΠΊΠ»Π°ΡΡΠ° (Β§R.5.2.4), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
struct tnode {
char tword[20];
int count;
tnode *left;
tnode *right;
void set(char*, tnode* l, tnode *r);
};
ΠΠ΄Π΅ΡΡ set ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ-ΡΠ»Π΅Π½ΠΎΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΊ:
void f(tnode n1, tnode n2)
{
n1.set("abc",&n2,0);
n2.set("def",0,0);
}
Π‘ΡΠΈΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Π° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΅Π΅ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Π΅ (Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ, Β§R.9.4) ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠ»Π΅Π½ΠΎΠ² Π΅Π΅ ΠΊΠ»Π°ΡΡΠ°. Π ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅Π½ΠΎΠ², ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π½Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°, Π΅Π΅ ΠΈΠΌΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΎΡΠ½ΠΈΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ::, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
void tnode::set(char* w, tnode* l, tnode* r)
{
count = strlen(w)+1;
if (sizeof(tword)βΉ=count)
error("tnode string too long");
strcpy(tword,w);
left = 1;
right = r;
}
ΠΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ tnode::set ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ set ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π½ΠΎΠΌ ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° tnode. ΠΠΌΠ΅Π½Π° ΡΠ»Π΅Π½ΠΎΠ² tword, count, left ΠΈ right ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΠ»Π΅Π½Π°ΠΌ ΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ·ΡΠ²Π°Π»Π°ΡΡ ΠΠΎΡΡΠΎΠΌΡ Π² Π²ΡΠ·ΠΎΠ²Π΅ n1.set("abc",&n2,0) tword ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ n1.tword, Π° Π² Π²ΡΠ·ΠΎΠ²Π΅ n2.set("def",0,0) tword ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ n2.tword. Π€ΡΠ½ΠΊΡΠΈΠΈ strlen, error ΠΈ strcpy Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Ρ Π³Π΄Π΅-ΡΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
Π§Π»Π΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ (Β§R.3.1) Π²Π½Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°; Π΅ΡΠ»ΠΈ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ, Π½ΠΎ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ, ΠΈΡ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ, ΡΠΌ. Β§R.3.3. ΠΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ Π΄ΡΡΠ·Π΅ΠΉ. ΠΡΡΠΊΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ·ΠΎΠ²Π° Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Π° (Β§R.9.4) ΠΊΠ»Π°ΡΡΠ° X, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° X, Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½.
R.9.3.1 Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ this
Π Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ (Β§R.9.3) ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Π΅ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ this ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π»Π°ΡΡ. Π ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Π΅ ΠΊΠ»Π°ΡΡΠ° X ΡΠΈΠΏ this Π΅ΡΡΡ X *const, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ Π½Π΅ ΠΎΠΏΠΈΡΠ°Π½Π° ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ const ΠΈΠ»ΠΈ volatile; Π΄Π»Ρ ΡΡΠΈΡ ΡΠ»ΡΡΠ°Π΅Π² this ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ const X *const ΠΈΠ»ΠΈ volatile X *const ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΠΈΡΠ°Π½Π° Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ const ΠΈ volatile, ΡΠΎ ΡΠΈΠΏ this Π±ΡΠ΄Π΅Ρ const volatile X *const, ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅ Β§R.18.3.3. ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
struct s {
int a;
int f() const;
int g() { return a++; }
int h() const { return a++; } // ΠΎΡΠΈΠ±ΠΊΠ°
};
int s::f() const { return a; }
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ a++ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ s::h ΠΎΡΠΈΠ±ΠΎΡΠ½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π΅Π΅ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΠΎΠΏΡΡΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ (ΡΠ°ΡΡΡ Π΅Π³ΠΎ), Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π²ΡΠ·ΡΠ²Π°Π»Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ s::h(). ΠΡΠΎ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Π°, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ const, Ρ.ΠΊ. this ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° const, ΠΈΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, *this ΠΈΠΌΠ΅Π΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ const.
Π€ΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ const (Ρ.Π΅. ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½, ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ const) ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² const, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π±Π΅Π· ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ const, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ Π±Π΅Π· ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ const ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π±Π΅Π· ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ const, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
void k(s& x, const s& y)
{
x.f();
x.g();
y.f();
y.g(); // ΠΎΡΠΈΠ±ΠΊΠ°
}
ΠΠ΄Π΅ΡΡ Π²ΡΠ·ΠΎΠ² y.g() ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ, Ρ.ΠΊ. y Π΅ΡΡΡ const, Π° s::g() - ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ Π±Π΅Π· ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ const, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ (ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ) ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½Π° Π²ΡΠ·ΡΠ²Π°Π»Π°ΡΡ.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ volatile (Ρ.Π΅. ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½, ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ volatile) ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ volatile. Π€ΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ const ΠΈ volatile.
ΠΠ»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² const ΠΈΠ»ΠΈ volatile ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ (Β§R.12.1) ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ (Β§R.12.4). ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ (Β§R.12.1) ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ (Β§R.12.4) Π½Π΅Π»ΡΠ·Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΌΠΈ const ΠΈΠ»ΠΈ volatile.
R.9.3.2 Π€ΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ inline
Π€ΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ (Β§R.8.3) Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°, Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½Π° ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ (inline, Β§R.7.1.2). ΠΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° - ΡΡΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π΅Π΅ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ inline ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°. Π‘ΡΠΈΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΠΎ ΡΡΠ°Π΄ΠΈΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠΈΠΏΠΎΠ². ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ