struct S {
S(int);
};
void foo(double a)
{
S x(int(a)); // ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
S y((int)a); // ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
S z = int(a); // ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
}
R.8.2 Π‘ΠΌΡΡΠ» ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ
Π‘ΠΏΠΈΡΠΎΠΊ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΡΡΠΎΠ³ΠΎ) ΡΠΏΠΈΡΠΊΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ-ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ (Β§R.7.1). ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠΌΡ-ΠΈΠ·-ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°Π΄Π°Π΅Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ. ΠΡΠ»ΠΈ Π½Π΅ ΡΡΠΈΡΠ°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ (Β§R.12.3, Β§R.13.4), ΠΈΠΌΡ-ΠΈΠ·-ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ auto, static, extern, register, friend, inline, virtual ΠΈΠ»ΠΈ typedef ΠΎΡΠ½ΠΎΡΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ-ΠΈΠ·-ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ. Π’ΠΈΠΏ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ-ΠΈΠ·-ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ-ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ (Β§R.7.1), ΡΠ°ΠΊ ΠΈ Π΅Π³ΠΎ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΌ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄
T D
Π³Π΄Π΅ T ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΈΠΏ, Π° D - ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ. ΠΡΠ»ΠΈ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ D Π΅ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π±Π΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ, ΡΠΎ ΡΠΈΠΏ ΡΡΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π΅ΡΡΡ T.
Π ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ, Π³Π΄Π΅ D ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄
( D1 )
ΡΠΈΠΏ D1 ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΡΠΈΠΏ D. ΠΠ°Π»ΠΈΡΠΈΠ΅ ΡΠΊΠΎΠ±ΠΎΠΊ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΈΠΏΠ° Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π² Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ-ΠΈΠ·-ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ, Π½ΠΎ Π΄Π»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
R.8.2.1 Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ
Π ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ T D, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ D ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄
* ΡΠΏΠΈΡΠΎΠΊ-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ-cv opt D1
ΡΠΈΠΏ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π΅ΡΡΡ
"β¦ ΡΠΏΠΈΡΠΎΠΊ-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ-cv ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° T". ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠΏΠΈΡΠΎΠΊ-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ-cv ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π° Π½Π΅ ΠΊ ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΡ
const ci = 10, *pc = &ci, *const cpc = pc;
int i *p, *const cp = &i;
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ: ci ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΡΠ΅Π»ΠΎΠ΅; pc ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΠ΅Π»ΠΎΠ΅; cpc ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΠ΅Π»ΠΎΠ΅; i ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ΅; p ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ΅Π»ΠΎΠ΅; ΠΈ cp ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ΅Π»ΠΎΠ΅. ΠΠΎΡΠ»Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ci, cpc ΠΈ cp Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ pc ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ cp. ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ:
i = ci;
*cp = ci;
pc++;
pc = cpc;
pc = p;
ΠΠ΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
ci = 1; // ΠΎΡΠΈΠ±ΠΊΠ°
ci++; // ΠΎΡΠΈΠ±ΠΊΠ°
*pc = 2; // ΠΎΡΠΈΠ±ΠΊΠ°
cp = &ci; // ΠΎΡΠΈΠ±ΠΊΠ°
cpc++; // ΠΎΡΠΈΠ±ΠΊΠ°
p = pc; // ΠΎΡΠΈΠ±ΠΊΠ°
ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ° ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ const, ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ Π±Π΅Π· ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ const.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° ΡΠΈΡΡΠ°ΡΠΈΡ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ volatile.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ Β§R.5.17 ΠΈ Β§R.8.4.
ΠΠ΅Π»ΡΠ·Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΡΡΠ»ΠΊΠΈ (Β§R.8.2.2) ΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ (Β§R.9.6).
R.8.2.2 Π‘ΡΡΠ»ΠΊΠΈ
Π ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ T D, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ D ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄
& ΡΠΏΠΈΡΠΎΠΊ-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ-cv opt D1
ΡΠΈΠΏ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π΅ΡΡΡ "β¦ΡΠΏΠΈΡΠΎΠΊ-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ-cv ΡΡΡΠ»ΠΊΠ° Π½Π° T". Π’ΠΈΠΏ void& Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅
void f(double& a) { a += 3.14; }
//β¦
double d = 0;
f(d);
a ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ·ΠΎΠ² f(d) ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ d Π½Π° 3.14. ΠΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅
int v[20];
//β¦
int& g(int i) { return v[i]; }
//β¦
g(3) = 7;
ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ: ΡΡΠ½ΠΊΡΠΈΡ g() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ΅Π»ΠΎΠ΅; ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ g() = 7; ΠΏΡΠΈΡΠ²ΠΎΠΈΡ 7 ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° v. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ:
struct link {
link* next;
};
link* first;
void h(link*& p) // `p' ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ
{
p-βΊnext = first;
first = p;
p = 0;
}
void k()
{
link* q = new link;
h(q);
}
ΠΠ΄Π΅ΡΡ p ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΊΠ°ΠΊ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° link, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ·ΠΎΠ² h(q) Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ q, ΡΠ°Π²Π½ΠΎΠ΅ 0, ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅ Β§R.8.4.3.
ΠΠ΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΡΠ»ΠΊΠΈ, ΡΡΡΠ»ΠΊΠΈ Π½Π° Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ (Β§R.9.6), ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΡΡΠ»ΠΎΠΊ ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΡΡΠ»ΠΊΠΈ. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ (Β§R.8.4.3), Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Ρ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ²Π½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ extern (Β§R.7.1.1), ΠΈΠ»ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠ»Π΅Π½Π° ΠΊΠ»Π°ΡΡΠ° (Β§R.9.2) ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΈΠ»ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ° (Β§R.8.2.5), ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅ Β§R.3.1.
R.8.2.3 Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΠ»Π΅Π½Ρ
Π ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ T D, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ D ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄
ΠΏΠΎΠ»Π½ΠΎΠ΅-ΠΈΠΌΡ-ΠΊΠ»Π°ΡΡΠ° :: * ΡΠΏΠΈΡΠΎΠΊ-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ-cv opt D1
ΡΠΈΠΏ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π΅ΡΡΡ "β¦ ΡΠΏΠΈΡΠΎΠΊ-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ-cv ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΠ»Π½ΠΎΠ΅-ΠΈΠΌΡ-ΠΊΠ»Π°ΡΡΠ° ΡΠΈΠΏΠ° T".
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅
class X {
public:
void f(int);
int a;
};
int X::* pmi = &X::a;
void (X::* pmf)(int) = &X::f;
pmi ΠΈ pmf ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π½ X ΡΠΈΠΏΠ° T ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π½ X ΡΠΈΠΏΠ° void(int) ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ:
X obj;
//β¦
obj.*pmi = 7; // ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ 7 ΡΠ»Π΅Π½Ρ obj ΡΠΈΠΏΠ° int
(obj.*pmf)(7); // Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ obj
// Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ 7
ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π½ Π½Π΅Π»ΡΠ·Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ Π½Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ° (Β§R.9.4), ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅ Β§R.5.5 ΠΈ Β§R.5.3.
R.8.2.4 ΠΠ°ΡΡΠΈΠ²Ρ
Π ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ T D, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ D ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄
D1 [ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅-ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° opt ]
ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΈΠΏΠ° "β¦ ΠΌΠ°ΡΡΠΈΠ² T". ΠΡΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅-ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ (Β§R.5.19), ΡΠΎ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π±ΠΎΠ»ΡΡΠ΅Π΅ 0. ΠΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π΅Ρ ΡΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ-ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π΅ΡΡΡ N, ΡΠΎ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠΌΠ΅Π΅Ρ N ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΠΎΡ 0 Π΄ΠΎ N-1.
ΠΠ°ΡΡΠΈΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈΠ·: ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ² (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ void), ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π½Ρ, ΠΊΠ»Π°ΡΡΠ°, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΡΠ»ΠΈ ΠΏΠΎΠ΄ΡΡΠ΄ ΠΈΠ΄ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ "ΠΌΠ°ΡΡΠΈΠ²β¦", ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΠΏΡΠΈΡΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅-ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°, Π·Π°Π΄Π°ΡΡΠ΅Π΅ Π³ΡΠ°Π½ΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°. Π’Π°ΠΊΠΎΠ΅ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΠΏΠ° ΠΌΠ°ΡΡΠΈΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΌΠ°ΡΡΠΈΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌ, Π° Π΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ²ΡΠ·Π°Π½ΠΎ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅. ΠΠ΅ΡΠ²ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅-ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠΏΡΡΠ΅Π½ΠΎ ΠΈ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π·Π° ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² (Β§R.8.4). Π’ΠΎΠ³Π΄Π° ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΈΡΠ»ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ΅ (Β§R.8.4.1).
Π ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ
float fa[17], *afp[17];
ΠΎΠΏΠΈΡΠ°Π½Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΡΠ΅Π» ΡΠΈΠΏΠ° float ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΡΠΈΡΠ»Π° ΡΠΈΠΏΠ° float, Π° Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ
static int x3d[3][5][7];
ΠΎΠΏΠΈΡΠ°Π½ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° 3Γ5Γ7. Π‘ΡΡΠΎΠ³ΠΎ Π³ΠΎΠ²ΠΎΡΡ, x3d ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΠΈΠ· ΡΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· ΠΏΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΠΈΠ· ΡΠ΅ΠΌΠΈ ΡΠ΅Π»ΡΡ . Π Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ: x3d, x3d[i], x3d[i][j], x3d[i][j][k].
ΠΡΠ»ΠΈ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΡΡΠ°ΡΡΠ²ΡΠ΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΈΠΏΠ° ΠΌΠ°ΡΡΠΈΠ², ΡΠΎ, ΠΈΡΠΊΠ»ΡΡΠ°Ρ ΡΠ»ΡΡΠ°ΠΈ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ sizeof ΠΈΠ»ΠΈ& ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ (Β§R.8.4.3), Π΅Π³ΠΎ ΡΠΈΠΏ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΌΠ°ΡΡΠΈΠ²Ρ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ Π°Π΄ΡΠ΅ΡΠ°ΠΌΠΈ. ΠΡΠ»ΠΈ Π½Π΅ ΡΡΠΈΡΠ°ΡΡ ΡΠ»ΡΡΠ°ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° (Β§R.13.4.5), ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎ E1[E2] ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ *((E1) + (E2)). Π‘ ΡΡΠ΅ΡΠΎΠΌ ΠΏΡΠ°Π²ΠΈΠ» ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ +, Π΅ΡΠ»ΠΈ E1 Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ², Π° E2 ΡΠ΅Π»ΠΎΠ΅, ΡΠΎ E1[E2] ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° E2-ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· E1. ΠΠΎΡΡΠΎΠΌΡ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠ²ΠΎΠΉ Π°ΡΠΈΠΌΠ΅ΡΡΠΈΡΠ½ΡΠΉ Π²ΠΈΠ΄, ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ - ΠΊΠΎΠΌΠΌΡΡΠ°ΡΠΈΠ²Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΈ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΡΠ»ΠΈ E - n-ΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·ΠΌΠ΅ΡΠ° ixjxβ¦xk, ΡΠΎ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ½ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° (n-1)-ΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·ΠΌΠ΅ΡΠ° jxβ¦xk. ΠΡΠ»ΠΈ ΠΊ ΡΡΠΎΠΌΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠ²Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ *, ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΉ (n-1)-ΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°ΠΌ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
int x[3][5];
ΠΠ΄Π΅ΡΡ ΠΎΠΏΠΈΡΠ°Π½ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· 3Γ5 ΡΠ΅Π»ΡΡ . ΠΡΠ»ΠΈ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ x, ΡΠΎ ΠΎΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· ΠΏΡΡΠΈ ΡΠ΅Π»ΡΡ . ΠΡΠ»ΠΈ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ x[i], ΡΡΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ *(x+i), Π² Π½Π°ΡΠ°Π»Π΅ x ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅, Π·Π°ΡΠ΅ΠΌ x+i ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ ΠΊ ΡΠΈΠΏΡ x, Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ i ΡΠΌΠ½ΠΎΠΆΠΈΡΡ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ x, Ρ.Π΅. Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΡΠΈ ΡΠ΅Π»ΡΡ . ΠΠ°ΡΠ΅ΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΡΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ² (ΠΈΠ· ΠΏΡΡΠΈ ΡΠ΅Π»ΡΡ ), ΠΊΠΎΡΠΎΡΡΠΉ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈΠ· ΡΠ΅Π»ΡΡ . ΠΡΠ»ΠΈ Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ, ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ, ΠΈ Π½Π° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π»ΠΎΠ΅.
ΠΠ· Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ Π² C++ Ρ ΡΠ°Π½ΡΡΡΡ ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π±ΡΡΡΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ), Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈΠ· ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΎΠ»ΠΈ Π½Π΅ ΠΈΠ³ΡΠ°Π΅Ρ.