ΠΡΠ±ΠΎΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ², ΠΊΡΠΎΠΌΠ΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ const Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ static_cast. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠ²Π΅Π΄Ρ ΡΠΈΠΏ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² ΠΊ ΡΠΈΠΏΡ double, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ:
// ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π΅Π»Π΅Π½ΠΈΡ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ
double slope = static_cast<double>(j) / i;
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ static_cast Π·Π°ΡΠ°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ. ΠΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΈ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΡΡΠΎ ΠΌΡ Π·Π½Π°Π΅ΠΌ ΠΈ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΠΌΡΡ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΏΠΎΡΠ΅ΡΠ΅ ΡΠΎΡΠ½ΠΎΡΡΠΈ. ΠΡΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠΈ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΌΠ΅Π½ΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π·Π°ΡΠ°ΡΡΡΡ Π²ΡΠ΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. ΠΡΠΈ ΡΠ²Π½ΠΎΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π²ΡΠ΄Π°Π΅ΡΡΡ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ static_cast ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ void* (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 2.3.2):
void* p = &d; // ok: Π°Π΄ΡΠ΅Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π½Π΅ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ΅Ρ
// Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ void*
// ok: ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ void* Π½Π°Π·Π°Π΄ Π² ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠΈΠΏ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ
double *dp = static_cast<double*>(p);
ΠΠΎΡΠ»Π΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠ° Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ ΡΠΈΠΏΠ° void* ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ static_cast ΠΈ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΊ Π΅Π³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΏΡ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π±ΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΈΠΏ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠΈΠΏΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ; ΠΏΡΠΈ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΈΠΏΠΎΠ² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ const_castΠΠΏΠ΅ΡΠ°ΡΠΎΡ const_cast ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ const Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 2.4.3):
const char *pc;
char *p = const_cast<char*>(pc); // ok: ΠΎΠ΄Π½Π°ΠΊΠΎ Π·Π°ΠΏΠΈΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ p
// ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠ°
ΠΡΠΈΠ½ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΡ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡΠ΅Π΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² Π½Π΅ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΉ, "ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ const". ΠΡΠΈ ΡΠ±ΡΠΎΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½Π΅ Π±ΡΠ» ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° Π½Π° Π·Π°ΠΏΠΈΡΡ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ. ΠΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° const_cast Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎ.
Π’ΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ const_cast ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΏΡΡΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ const_cast Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ:
const char *cp;
// ΠΎΡΠΈΠ±ΠΊΠ°: static_cast Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ±ΡΠΎΡΠΈΡΡ const
char *q = static_cast<char*>(cp);
static_cast<string>(cp); // ok: ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ Π»ΠΈΡΠ΅ΡΠ°Π» Π² ΡΡΡΠΎΠΊΡ
const_cast<string>(cp); // ΠΎΡΠΈΠ±ΠΊΠ°: const_cast ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ
// ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΡΡΡ
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ const_cast ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 6.4.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ reinterpret_castΠΠΏΠ΅ΡΠ°ΡΠΎΡ reinterpret_cast ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΡΡ Π΅ΠΌΡ ΡΠ²ΠΎΠΈΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ². Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:
int *ip;
char *pc = reinterpret_cast<char*>(ip);
ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°Π±ΡΠ²Π°ΡΡ, ΡΡΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ pc, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π° Π½Π΅ ΡΠΈΠΌΠ²ΠΎΠ». ΠΡΠ±ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ pc, ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡΠ΅Π΅, ΡΡΠΎ ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΠΎΡΠ΅ΡΠΏΠΈΡ Π½Π΅ΡΠ΄Π°ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, Π²Π΅ΡΠΎΡΡΠ½Π΅ΠΉ Π²ΡΠ΅Π³ΠΎ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π½Π΅ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ:
string str(pc);
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ pc Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° string β Ρ ΠΎΡΠΎΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° reinterpret_cast. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΈΠΏΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ Π²ΡΠ΄Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ pc Π°Π΄ΡΠ΅ΡΠΎΠΌ ΡΠΈΠΏΠ° int ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ Π²ΡΠ΄Π°ΡΡ Π½ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, Π½ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΡΡΠΎ ΠΈ Π½ΡΠΆΠ½ΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ Π»ΡΠ±ΠΎΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ pc ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°Π΄ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° char*. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π²ΡΡΡΠ½ΠΈΡΡ, ΡΡΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΈΠΏ int. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΠΎΠΊΠΈ str ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ pc Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡΠ°Π²ΠΎΠΌΠ΅ΡΠ½Π°, Ρ ΠΎΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½Π°, Π΅ΡΠ»ΠΈ Π½Π΅ Ρ ΡΠΆΠ΅! ΠΡΡΠ»Π΅Π΄ΠΈΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΡΡΠ΄Π½ΠΎ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ip ΠΊ pc ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ pc Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° string β Π² Π΄ΡΡΠ³ΠΎΠΌ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ reinterpret_cast ΠΆΠ΅ΡΡΠΊΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ. Π§ΡΠΎΠ±Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ reinterpret_cast, ΡΠ»Π΅Π΄ΡΠ΅Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠΈΠΏΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
ΠΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π² ΡΡΠ°ΡΠΎΠΌ ΡΡΠΈΠ»Π΅Π ΡΠ°Π½Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΡΠ·ΡΠΊΠ° Π‘++ ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π»ΠΎ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π΄Π²ΡΡ ΡΠΎΡΠΌ:
ΡΠΈΠΏ (Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅); // ΡΠΎΡΠΌΠ° Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΡΠΈΠ»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ
(ΡΠΈΠΏ) Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅; // ΡΠΎΡΠΌΠ° Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΡΠΈΠ»Π΅ ΡΠ·ΡΠΊΠ° Π‘
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠΈΠΏΠΎΠ², ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌ const_cast, static_cast ΠΈΠ»ΠΈ reinterpret_cast. Π ΡΠ»ΡΡΠ°ΡΡ , Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ static_cast ΠΈΠ»ΠΈ const_cast, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π² ΡΡΠ°ΡΠΎΠΌ ΡΡΠΈΠ»Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ. ΠΠΎ Π΅ΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌ, ΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ reinterpret_cast. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΡΠΌΡ Π·Π°ΠΏΠΈΡΠΈ ΡΡΠ°ΡΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΡΡΠΎ ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ reinterpret_cast.
char *pc = (char*) ip; // ip ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΈΠΏ int
Π‘ΠΎΠ²Π΅Ρ. ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²ΠΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π°ΡΡΡΠ°Π΅Ρ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠΈΠΏΠΎΠ² (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 2.2), ΠΏΠΎΡΡΠΎΠΌΡ Π°Π²ΡΠΎΡΡ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ². ΠΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° reinterpret_cast. Π’Π°ΠΊΠΈΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ Π²ΡΠ΅Π³Π΄Π° ΠΎΠΏΠ°ΡΠ½Ρ. ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ const_cast ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π½Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 6.4. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° const_cast Π·Π°ΡΠ°ΡΡΡΡ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΠ΅Ρ ΠΎ ΠΏΠ»ΠΎΡ ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅. ΠΡΡΠ³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ, static_cast ΠΈ dynamic_cast, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π½Π΅ΡΠ°ΡΡΠΎ. ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, Π° Π½Π΅Π»ΡΠ·Ρ Π»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. ΠΡΠ»ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ ΠΆΠ΅ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ, ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΏΡΠΈΠ½ΡΡΡ ΠΌΠ΅ΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠ½ΠΈΠ·ΠΈΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ, Ρ.Π΅. ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΠΎΡΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ.
ΠΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΠΌΠ΅Π½Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Ρ, ΡΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡ Π»Π΅Π³ΠΊΠΎ ΡΠΏΡΡΡΠΈΡΡ ΠΈΠ· Π²ΠΈΠ΄Ρ, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΅ΡΠ΅ ΡΡΡΠ΄Π½Π΅ΠΉ.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π° 4.11.3Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 4.36. Π‘ ΡΡΠ΅ΡΠΎΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ i ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ int, a d β double, Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ i *= d ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ»ΠΎΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π° Π½Π΅ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 4.37. ΠΠ΅ΡΠ΅ΠΏΠΈΡΠΈΡΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΡΡΠ°ΡΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ.
int i; double d; const string *ps; char *pc; void *pv;
(a) pv = (void*)ps; (b) i = int(*pc);
(c) pv = &d; (d) pc = (char*)pv;
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 4.38. ΠΠ±ΡΡΡΠ½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅:
double slope = static_cast<double>(j/i);
4.12. Π’Π°Π±Π»ΠΈΡΠ° ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²
Π’Π°Π±Π»ΠΈΡΠ° 4.4. ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²
ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π Π°Π·Π΄Π΅Π» Π :: ΠΠ»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ::ΠΈΠΌΡ 7.4.1 Π :: ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΊΠ»Π°ΡΡ::ΠΈΠΌΡ 3.2.2 Π :: ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΠΈΠΌΠ΅Π½::ΠΈΠΌΡ 3.1 Π . ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡ.ΡΠ»Π΅Π½ 1.5.2 Π -> ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° pointer->ΡΠ»Π΅Π½ 3.4.1 Π [] ΠΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅[Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅] 3.5.2 Π () ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΡ(ΡΠΏΠΈΡΠΎΠΊ_Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ) 1.5.2 Π () ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ type ΡΠΈΠΏ(ΡΠΏΠΈΡΠΎΠΊ_Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ) 4.11.3 Π ++ ΠΠΎΡΡΡΠΈΠΊΡΠ½ΡΠΉ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ l-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅++ 4.5 Π -- ΠΠΎΡΡΡΠΈΠΊΡΠ½ΡΠΉ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ l-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅-- 4.5 Π typeid ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΈΠΏΠ° typeid(ΡΠΈΠΏ) 19.2.2 Π typeid ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΈΠΏΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ typeid(Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅) 19.2.2 Π Π―Π²Π½ΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² cast_ΠΈΠΌΡ<ΡΠΈΠΏ>(Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅) 4.11.3 Π ++ ΠΡΠ΅ΡΠΈΠΊΡΠ½ΡΠΉ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ++l-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 4.5 Π -- ΠΡΠ΅ΡΠΈΠΊΡΠ½ΡΠΉ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ --l-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 4.5 Π ~ ΠΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ NOT ~Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.8 Π ! ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ NOT !Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.3 Π - Π£Π½Π°ΡΠ½ΡΠΉ ΠΌΠΈΠ½ΡΡ -Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.2 Π + Π£Π½Π°ΡΠ½ΡΠΉ ΠΏΠ»ΡΡ +Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.2 Π * ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ *Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 2.3.2 Π & ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π°Π΄ΡΠ΅ΡΡ &l-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 2.3.2 Π () ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² (ΡΠΈΠΏ)Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.11.3 Π sizeof Π Π°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° sizeof Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.9 Π sizeof Π Π°Π·ΠΌΠ΅Ρ ΡΠΈΠΏΠ° sizeof(ΡΠΈΠΏ) 4.9 Π sizeof... Π Π°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² sizeof...(ΠΈΠΌΡ) 16.4 Π new Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° new ΡΠΈΠΏ 12.1.2 Π new[] Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° new ΡΠΈΠΏ[ΡΠ°Π·ΠΌΠ΅Ρ] 12.1.2 Π delete ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° delete Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 12.1.2 Π delete[] ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° delete[] Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 12.1.2 Π noexcept Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ noexcept(Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅) 18.1.4 Π ->* Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ->*ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ_Π½Π°_ΡΠ»Π΅Π½ 19.4.1 Π .* Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡ.*ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ_Π½Π°_ΡΠ»Π΅Π½ 19.4.1 Π * Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ * Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.2 Π / ΠΠ΅Π»Π΅Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ / Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.2 Π % ΠΠ΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ (ΠΎΡΡΠ°ΡΠΎΠΊ) Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ % Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.2 Π + Π‘ΡΠΌΠΌΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ + Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.2 Π - Π Π°Π·Π½ΠΈΡΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ - Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.2 Π << ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ << Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.8 Π >> ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ >> Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.8 Π < ΠΠ΅Π½ΡΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ < Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.3 Π <= ΠΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ <= Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.3 Π > ΠΠΎΠ»ΡΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ > Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.3 Π >= ΠΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ >= Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.3 Π == Π Π°Π²Π΅Π½ΡΡΠ²ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ == Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.3 Π != ΠΠ΅ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ != Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.3 Π & ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ AND Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ & Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.8 Π ^ ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ XOR Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ^ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.8 Π | ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ OR Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ | Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.8 Π && ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ AND Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ && Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.3 Π || ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ OR Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ || Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.3 Π ?: Π£ΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ? Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ : Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.7 Π = ΠΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ l-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.4 Π *=, /=, %=, Π‘ΠΎΡΡΠ°Π²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ l-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ += Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈ Ρ.Π΄. 4.4 Π +=, -=, 4.4 Π <<=, >>=, 4.4 Π &=, |=, ^= 4.4 Π throw ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ throw Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.6.1 Π , ΠΠ°ΠΏΡΡΠ°Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4.10Π Π΅Π·ΡΠΌΠ΅