float y[4][3] = (* 1, 3, 5, 2, 4, 6, 3, 5, 7 *);
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄Π»Ρ y Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π»Π΅Π²ΠΎΠΉ ΡΠΈΠ³ΡΡΠ½ΠΎΠΉ ΡΠΊΠΎΠ±ΠΊΠΈ, Π½ΠΎ Π½Π΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π½Π΅Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄Π»Ρ y[0], ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ y[1] ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠΈ Π΄Π»Ρ y[2]. Π’Π°ΠΊ ΠΆΠ΅
float y[4][3] = (* (* 1 *), (* 2 *), (* 3 *), (* 4 *) *);
ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ y (ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²) ΠΈ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½ΡΠ»ΡΠΌΠΈ.
8.6.2 ΠΠ±ΡΠ΅ΠΊΡΡ ΠΠ»Π°ΡΡΠΎΠ²
ΠΠ±ΡΠ΅ΠΊΡ Ρ Π·Π°ΠΊΡΡΡΡΠΌΠΈ ΡΠ»Π΅Π½Π°ΠΌΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²; ΡΡΠΎ ΠΆΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π½ΠΈΠ΅. ΠΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ. ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΠΎ ΡΡΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π½ΠΎ Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ. Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΊ ΡΠΈΠΏΡ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ new. Π‘Π»Π΄ΡΡΡΠΈΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ΅ Π΄Π°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (#8.4): struct complex (*
float re; float im; complex (float r,float i = 0) (* re=r; im=i; *) *);
complex zz1(1,0); complex zz2(1); complex* zp1 = new complex (1,0); complex* zp1 = new complex (1);
ΠΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠ³ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ =. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
complex zz3 = complex (1,0); complex zz4 = complex (1); complex zz5 = 1; complex zz6 = zz3;
ΠΡΠ»ΠΈ Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΏΠΎΠ»ΡΡΠ°ΡΡΠΈΠΉ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»Π·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄ΡΡΠ³ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π½ΠΎ Π½Π΅ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ.
ΠΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»Π΅Π½ΠΎΠΌ ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΠ»ΡΠΊΠΎ (1) Π΅ΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, ΠΈΠ»ΠΈ (2) Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΈΠ»ΠΈ (3) Π΅ΡΠ»ΠΈ ΡΠΎΡΡΠ°Π²Π½ΠΎΠΉ ΠΎΠ±Π΅ΠΊΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π΄Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π½Π° (ΡΠΌ. #10). Π ΡΠ»ΡΡΠ°Π΅ 2 ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·ΡΠ²Π΅ΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠ»ΠΈ ΡΠΎΡΡΠ°Π²Π½ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ (Π½ΠΎ Π½Π΅ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ) Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΠ»Π΅Π½ ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π½ΠΎΠΌ ΠΊΠ»Π°ΡΠ° Ρ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌΠΈ, ΡΠΎ ΡΡΠΎΡ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΡΠ½ΠΈΡΡΠΆΠ΅Π½ΠΈΠΈ ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π΄Π»Ρ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π²ΡΠ·Π²Π°ΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅; Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ Π΄Π»Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΠ»ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΠΏΠΈΡΠ°Π½, Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π½ΠΎ. ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΠΎ ΠΎΠ½ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² Π΄Π»Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΅ΠΌΡ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ . ΠΡΠ»ΠΈ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ, ΡΠΎ ΠΎΠ½ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΄ΠΎ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠΎΠ² Π΄Π»Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΅ΠΌΡ ΠΏΡΠ΅ΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ .
8.6.3 Π‘ΡΡΠ»ΠΊΠΈ
ΠΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΏΠΈΡΠ°Π½Π° ΠΊΠ°ΠΊ T amp;, ΡΠΎ Π΅ΡΡΡ Β«ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠΈΠΏ TΒ», ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΠΈΠΏΠ° T, ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ Π² T. Π‘ΡΡΠΊΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
int i; int amp; r = i; r = 1; // Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ i ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ 1 int* p = amp;r; // p ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° i
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΡΠΈΠΈ. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠ»ΠΊΠΈ ΠΎΡΠ΅Π½Ρ ΡΠΈΠ»Π½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΅ΠΉ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ. ΠΡΠ»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠΈΠΏ T Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ lvalue, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ ΠΎΠ±Π΅ΠΊΡ ΡΠΈΠΏΠ° T. Π’ΠΎΠ³Π΄Π° ΡΡΡΠ»ΠΊΠ° ΡΡΠ°Π½Π΅Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π½. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
double amp; rr = 1;
Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ, ΠΈ rr Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° double, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1.0.
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠ»Π°ΡΡ B ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ²Π°Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° D ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ B ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΊΡΡΡΡΠΌ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° D (Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ D Π΅ΡΡΡ B).
Π‘ΡΡΠ»ΠΊΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΠΏΠΎΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
struct B (* ... *); struct D : B (* ... *); int f(B amp;); D a; f(a);
8.6.4 ΠΠ°ΡΡΠΈΠ²Ρ Π‘ΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
ΠΠ°ΡΡΠΈΠ² char ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΎΠΉ. ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΡΠΎΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡ ΡΠ»Π΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ°ΠΏΡΠΌΠ΅Ρ:
char msg[] = Β«Syntax error on line %d\nΒ»;
Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠ»Π΅Π½Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»Π·ΠΈΡΠΎΠ²Π°Π½Ρ ΡΡΡΠΎΠΊΠΎΠΉ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ sizeof(msg)==25.
8.7 ΠΠΌΠ΅Π½Π° Π’ΠΈΠΏΠΎΠ²
ΠΠ½ΠΎΠ³Π΄Π° (Π΄Π»Ρ Π½Π΅ΡΠ²Π½ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° sizeof ΠΈΠ»ΠΈ new) Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΡ ΡΠΏΠ° Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Β«ΠΈΠΌΠ΅Π½ΠΈ ΡΠΈΠΏΠ°Β» ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎ ΡΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΡΡΠ΅Π½ΠΎ ΠΈΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΈΠΌΡ_ΡΠΈΠΏΠ°: ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ_ΡΠΈΠΏΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ_ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ
Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ_ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ: ΠΏΡΡΡΠΎΠΉ * Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ_ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ_ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ( ΡΠΏΠΈΡΠΎΠΊΠΎ_ΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ_ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²) Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ_ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ [ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅_Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ opt ] ( Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ_ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ )
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠΌ_ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π΅, Π³Π΄Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠΎΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π±Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π±ΡΠ»Π° ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΌ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ. Π’ΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠΏ ΡΠ²Π»ΡΠ΅ΡΡΡ β ΡΠΎΡ ΠΆΠ΅, ΡΡΠΎ ΠΈ ΡΠΈΠΏ Π³ΠΈΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,
int int * int *[3] int (*)[3] int *() int (*)()
ΠΈΠΌΠ΅Π½ΡΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠΈΠΏΡ Β«ΡΠ΅Π»ΠΎΠ΅Β», Β«ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»ΠΎΠ΅Β», Β«ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· 3 ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΡΠ΅Π»ΡΠ΅Β», Β«ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· 3 ΡΠ΅Π»ΡΡ Β», Β«ΡΡΠ½ΠΊΡΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ΅Π»ΠΎΠ΅Β» ΠΈ Β«ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΠ΅Π»ΠΎΠ΅Β».
8.8 Typedef β ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π’ΠΈΠΏΠ°
ΠΠΏΠΈΡΠ°Π½ΠΈΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ_ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ typedef, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΈΠΌΠ΅Π½ΡΡΡΠΈΠΌΠΈ ΠΎΠ½ΠΎΠ²Π½ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠ΅ ΡΠΈΠΏΡ.
typedef-ΠΈΠΌΡ: ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ
ΠΠ½ΡΡΡΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ typedef, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠΉ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΠΏΡΠ°ΡΠ΅Π»Ρ, ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΌΡ ΡΠ»ΠΎΠ²Ρ ΡΠΈΠΏΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΈΠΏ, Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Ρ ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² #8.4. Π‘ΠΏΠ΅ΡΡΠΈΠΊΠ°ΡΠΎΡ_ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ typedef Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ»Π΅Π½Π° ΠΊΠ»Π°ΡΡΠ°. ΠΠΌΡ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ typedef-ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ»Π΅
typedef int MILES, *KLICKSP; struct complex (* double re, im; *);
ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ
MILES distance; extern KLICKSP metricp; complex z, *zp;
ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ; distance ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ int, metricp ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ Β«ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° intΒ».
typedef Π²Π²ΠΎΠ΄ΠΈΡ Π½Π΅ Π½ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΡ Π΄Π»Ρ ΡΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΡΠ΅ΠΌ. Π’Π°ΠΊ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ distance ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅ΡΡΠ°Ρ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠΏ, ΡΡΠΎ ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ int ΠΎΠ±ΡΠ΅ΠΊΡ.
ΠΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° Π²Π²ΠΎΠ΄ΠΈΡ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
struct X (* int a; *); struct Y (* int a; *); X a1; Y a2; int a3;
ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ².
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΠΈΠ΄Π°
ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅_ΠΈΠΌΠ΅Π½ΠΈ: ΡΠΎΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ; enum ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ;
ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π΅ΠΊΠΎΡΡΠΎΠ³ΠΎ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅ΡΠ΅ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ) ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π½ΠΈΡ. Π’Π°ΠΊΠΈΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ, ΡΡΡΠ»Π°ΡΡΠΈΡ ΡΡ Π΄ΡΡΠ³ Π½Π° Π΄ΡΡΠ³Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
class vector;
class matrix (* // ... friend vector operator*(matrix amp;, vector amp;); *);
class vector (* // ... friend matrix operator*(matrix amp;, vector amp;); *);
8.9 ΠΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΠΌΠ΅Π½Π° Π€ΡΠ½ΠΊΡΠΈΠΉ
Π ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π½Π΅ΠΊΠΎΠ»ΡΠΊΠΎ (ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ) ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΡΠΎ ΠΈΠΌΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Ρ ΡΠΈΠΏΠ°ΠΌΠΈ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠΎΠΈΡΠΊ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·Π²Π°ΡΡ, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΡΡΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°Π³Π°:
ΠΡΠΊΠ°ΡΡ ΡΠΎΡΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π΅ΡΠ»ΠΈ Π½Π°ΠΉΠ΄Π½Π°.
ΠΡΠΊΠ°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΡΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ (#6.6-8) ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ.
ΠΡΠΊΠ°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ (#6.5.6). ΠΡΠ»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π΅Π΄ΠΈΠ½ΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅.
ΠΠΎΠ»Ρ, char ΠΈΠ»ΠΈ short ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠΎΡΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠΏΠ° int. Float ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠΎΡΠ½ΠΎ ΡΠΎΠΎΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠΏΠ° double.
ΠΠ°Π΄ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ: int Π² long, int Π² double ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΡΡΡΠ»ΠΎΠΊ (#6.7-8).
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΈΡΡ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΡΠ»Π΅Π½Π° ΠΈ Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ operator, Π»ΡΠ±ΠΎΠΌΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π²Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ overload, ΡΠΌ. #8.1. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
overload abs; double abs(double); int abs(int);
abs(1); // Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ abs(int); abs(1.0); // Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ abs(double);
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
class X (* ... X (int); *); class Y (* ... Y (int); *);
class Z (* ... Z (char*); *);
overload int f (X), f (Y); overload int g (X), g (Z);
f (1); // Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ: f(X(1)) ΠΈΠ»ΠΈ f(Y(1)) g (1); // g(X(1)) g (Β«asdfΒ»); // g(Z(Β«asdfΒ»))
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ Π²Π·ΡΡΠΈΡ Π°Π΄ΡΠ΅ΡΠ° amp; ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½ΠΎΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠΈΠΏ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π°Π΄ΡΠ΅Ρ ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ°ΡΡ. ΠΠ°ΠΏΡΠΌΠ΅Ρ:
int operator=(matrix amp;, matrix amp;); int operator=(vector amp;, vector amp;); int (*pfm)(matrix amp;, matrix amp;) = amp;operator=; int (*pfv)(vector amp;, vector amp;) = amp;operator=; int (*pfx)(...) = amp;operator=;
8.10 ΠΠΏΠΈΡΠ°Π½ΠΈΡ ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠΉ
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠΈΠΏΠ°ΠΌΠΈ int Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΊΠΎΠ½ΡΡΠ°ΡΠ°ΠΌΠΈ.
enum_ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ: enum ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ opt (* enum_ΡΠΏΠΈΡΠΎΠΊ *)
enum_ΡΠΏΠΈΡΠΎΠΊ: ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ enum_ΡΠΏΠΈΡΠΎΠΊ , ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ
ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ: ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ = ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅_Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π² enum-ΡΠΏΠΈΡΠΊΠ΅ ΠΎΠΏΠΈΡΠ°Π½Ρ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈ ΠΌΠ³ΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΠΌΠ΅ΡΡΠ°Ρ , Π³Π΄Π΅ ΡΡΠ΅Π±ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. ΠΡΠ»ΠΈ Π½Π΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ Ρ =, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ 0 ΠΈ Π²ΠΎΠ·ΡΠ°ΡΡΠ°ΡΡ Π½Π° 1 ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ»Π΅Π²Π° Π½Π°ΡΠΏΠ°Π²ΠΎ. ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ Ρ = Π΄Π°Π΅Ρ Π°ΡΡΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ Ρ Π½ΠΈΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅; ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠΈΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΡ ΠΎΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Π·Π½ΡΠ΅Π½ΠΈΡ.