ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π·Π΄Π΅ΡΡ [email protected] β ΡΡΠ½ΠΊΡΠΈΡ-Π½Π΅ ΡΠ»Π΅Π½, ΡΠ°ΠΊ ΡΡΠΎ ΠΎΠ½Π° ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΊ Π»Π΅Π²ΠΎΠ³ΠΎ, ΡΠ°ΠΊ ΠΈ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 44). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΊΠ»Π°ΡΡ String, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΠ²Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΏΠΎΠ»ΡΡΠ°ΡΡΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΈΠΏΠ° char, ΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ operator+(const String&, const String&), ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠ°ΠΊ ΡΠΈΠΏΠ° char+String, ΡΠ°ΠΊ ΠΈ String+char; ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ String::operator+(const String&) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ String+char. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ΅Π»ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ, ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ΄ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΎΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° [email protected], Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΡ ΡΡ ΡΠ»Π΅Π½Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΡΠΈΠΏΠΎΠ² (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 29).
Π’Π°ΠΊΠΆΠ΅ Π΄Π΅Π»Π°ΠΉΡΠ΅ Π½Π΅ ΡΠ»Π΅Π½ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΡ [email protected]= Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 44). Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΡΠ»Π΅Π½Π°ΠΌΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ Π² ΡΠΎ ΠΆΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½, ΡΡΠΎ ΠΈ ΠΊΠ»Π°ΡΡ T, ΡΠ°ΠΊ ΡΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΡΡΡΠΏΡΠΈΠ·ΠΎΠ² ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΈΠΌΠ΅Π½ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 57).
ΠΠ°ΠΊ Π²Π°ΡΠΈΠ°Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ [email protected], ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΉ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΠ΅ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡ Π΅ΠΌΡ Π±ΠΎΠ»ΡΡΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ:
T& [email protected]=(T& lhs, const T& rhs) {
// ... ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ...
return lhs;
}
T [email protected](T lhs, const T& rhs) { // lhs ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
return lhs @= rhs;
}
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΡΠΈΠ°Π½Ρ β ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ [email protected], ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ const-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ, ΡΡΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΡΠΌΡΡΠ»Π° ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ a+b=c, Π½ΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΡΠ΅ΡΡΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Π° = (b+c).replace(pos, n, d). Π ΡΡΠΎ Π²Π΅ΡΡΠΌΠ° Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΡΠΊΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ ΡΡΡΠΎΠΊ b ΠΈ Ρ, Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π°.
ΠΡΠΈΠΌΠ΅ΡΡΠΡΠΈΠΌΠ΅Ρ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ += Π΄Π»Ρ ΡΡΡΠΎΠΊ. ΠΡΠΈ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ ΡΡΡΠΎΠΊ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π°ΡΠ°Π½Π΅Π΅ Π·Π½Π°ΡΡ Π΄Π»ΠΈΠ½Ρ, ΡΡΠΎΠ±Ρ Π²ΡΠ΄Π΅Π»ΡΡΡ ΠΏΠ°ΠΌΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·:
String& String::operator+=( const String& rhs ) {
// ... Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ...
return *this;
}
String operator+( const String& lhs, const String& rhs ) {
String temp; // ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΡΡΠ°
// Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠ°ΠΌΡΡΠΈ
temp.Reserve(lhs.size() + rhs.size());
// ΠΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ ΡΡΡΠΎΠΊ ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ
return (temp += lhs) += rhs;
}
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ operator*= Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ ΡΠΈΡΠ΅Π»), ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π»Π΅Π²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π²ΡΠ³ΠΎΠ΄Π½ΡΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° operator*= ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° operator*, Π° Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.
Π‘ΡΡΠ»ΠΊΠΈ[Alexandrescu03a] β’ [Cline99] Β§23.06 β’ [Meyers96] Β§22 β’ [Sutter00] Β§20
28. ΠΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΠΈΠ΄ ++ ΠΈ --, ΠΈ Π²ΡΠ·ΠΎΠ² ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ° ΠΈ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ Π½ΠΈΡ Π΅ΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½Π°Ρ ΠΈ ΠΏΠΎΡΡΡΠΈΠΊΡΠ½Π°Ρ ΡΠΎΡΠΌΡ Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΠ΅ΠΉΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΎΠΉ. ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ operator++ ΠΈ operator-- ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄ΡΠ°ΠΆΠ°Π»ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΎΠ². ΠΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΌ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ².
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅Π‘ΡΠ°ΡΠ°Ρ ΡΡΡΠΊΠ° Π³Π»Π°ΡΠΈΡ, ΡΡΠΎ ΡΠ·ΡΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π‘++, Π° Π½Π΅ ++Π‘, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ·ΡΠΊ Π±ΡΠ» ΡΠ»ΡΡΡΠ΅Π½ (Π½Π° ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ), Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π‘ (ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°). Π ΡΡΠ°ΡΡΡΡ, ΡΡΡ ΡΡΡΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ, Π½ΠΎ ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½Π°Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠΎΡΠΌΠ°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ².
Π ΡΠ»ΡΡΠ°Π΅ ++ ΠΈ -- ΠΏΠΎΡΡΡΠΈΠΊΡΠ½ΡΠ΅ ΡΠΎΡΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΠ΅ ΡΠΎΡΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΏΠΎΡΡΡΠΈΠΊΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΠΎΠ³ΠΎ. ΠΠΎΡ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΠΈΠ΄ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
// ---- ΠΡΠ΅ΡΠΈΠΊΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ -----------------------
T& T::operator++() { // ΠΡΠ΅ΡΠΈΠΊΡΠ½ΡΠΉ Π²ΠΈΠ΄:
// Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ // - ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
// ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ° // Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ
return *this; // - return *this;
}
T& T::operator--() { // ΠΡΠ΅ΡΠΈΠΊΡΠ½ΡΠΉ Π²ΠΈΠ΄:
// ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ // - ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
// Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ° // Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ
return *this; // - return *this;
}
// ---- ΠΠΎΡΡΡΠΈΠΊΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ---------------------
T T::operator++(int) { // ΠΠΎΡΡΡΠΈΠΊΡΠ½ΡΠΉ Π²ΠΈΠ΄:
T old(*this); // - ΠΠ°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΡΡΠ°ΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
++*this; // - ΠΡΠ·ΠΎΠ² ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ
return old; // - ΠΠΎΠ·Π²ΡΠ°Ρ ΡΡΠ°ΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
}
T T::operator--(int) { // ΠΠΎΡΡΡΠΈΠΊΡΠ½ΡΠΉ Π²ΠΈΠ΄:
T old(*this); // - ΠΠ°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΡΡΠ°ΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
--*this; // - ΠΡΠ·ΠΎΠ² ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ
return old; // - ΠΠΎΠ·Π²ΡΠ°Ρ ΡΡΠ°ΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
}
Π Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΌ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΡΡΡΠΈΠΊΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ. ΠΡΠ΅ΡΠΈΠΊΡΠ½Π°Ρ ΡΠΎΡΠΌΠ° ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π°, ΠΎΠ½Π° Π²Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΠΊ ΠΆΠ΅, ΠΈ Π·Π°ΡΠ°ΡΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠ΅Π½ΡΡΠ΅. ΠΡΠΎ Π½Π΅ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, Π° ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 9).
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠ¨Π°Π±Π»ΠΎΠ½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ Π½Π°ΡΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π±Π»ΠΎΠ½Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π½Π·ΠΎΡΠΎΠ² ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΡ), ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠ΅Π΄ΡΡΠ²Π»ΡΡΡΡΡ ΠΆΠ΅ΡΡΠΊΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ»Ρ ΡΠ°ΠΊΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΡΠ°ΡΡΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΈΡΠΊΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΡ ΡΠΎΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ².
Π‘ΡΡΠ»ΠΊΠΈ[Cline99] Β§23.07-08 β’ [Dewhurst03] Β§87 β’ [Meyers96] Β§6 β’ [Stroustrup00] Β§19.3 β’ [Sutter00] Β§6, Β§20
29. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²
ΠΠ΅ ΠΏΡΠΈΡΠΌΠ½ΠΎΠΆΠ°ΠΉΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ²Π΅ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ (ΠΡΠΈΡΠ²Π° ΠΠΊΠΊΠ°ΠΌΠ°): Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ (ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 40), Π½ΠΎ Π² ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 8) ΠΈ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ·Π»ΠΈΡΠ½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΡΠΈΠ³Π½Π°ΡΡΡΠ°ΠΌΠΈ, ΡΠΎΡΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΈ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ².
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π² ΠΎΡΠΈΡΠ΅ ΠΈ Ρ Π²Π°Ρ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π±ΡΠΌΠ°Π³Π°, ΡΡΠΎ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅? ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ β Π²Ρ ΠΈΠ΄Π΅ΡΠ΅ ΠΊ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π»ΡΠ½ΠΎΠΌΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΡ ΠΈ Π΄Π΅Π»Π°Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΏΠΈΠΉ ΡΠΈΡΡΠΎΠ³ΠΎ Π»ΠΈΡΡΠ° Π±ΡΠΌΠ°Π³ΠΈ.
ΠΠ°ΠΊ Π±Ρ Π³Π»ΡΠΏΠΎ ΡΡΠΎ Π½ΠΈ Π·Π²ΡΡΠ°Π»ΠΎ, Π½ΠΎ Π·Π°ΡΠ°ΡΡΡΡ ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ·Π»ΠΈΡΠ½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ Π½ΠΈΠΌΠΈ ΠΈ ΡΡΡ ΠΆΠ΅ ΠΈΡ Π²ΡΠ±ΡΠΎΡΠΈΡΡ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 40). Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ:
class String { // ...
String(const char* text); // ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π½Π΅ΡΠ²Π½ΠΎΠ΅
// ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²
};
bool operator==(const String&, const String&);
// ... Π³Π΄Π΅-ΡΠΎ Π² ΠΊΠΎΠ΄Π΅ ...
if (someString == "Hello"){ ... }
ΠΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ²ΡΠΈΡΡ Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΌΠΈ Π²ΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΌΠΈ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½ΠΎ Π±ΡΠ»ΠΎ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² Π²ΠΈΠ΄Π΅ someString == String("HellΠΎ"). ΠΡΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ°ΡΡΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ β ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈΡ . Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠ΅ β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
bool operator==(const String& lhs, const string& rhs); // #1
bool operator==(const String& lhs, const char* rhs); // #2
bool operator==(const char* lhs, const String& rhs); // #3
ΠΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Π½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ "Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡ", ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ ΡΡΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ. ΠΡΡΠ΄ Π»ΠΈ Π²Ρ Π²ΠΏΠ°Π΄Π΅ΡΠ΅ Π² Π΅ΡΠ΅ΡΡ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 8) ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ΅, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΡΠΎ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ»Π°Π±ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΏΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΠΎΠ³Π΄Π° ΡΡΡΠ΄Π½ΠΎ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΈΠΏΡ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠΎΠ΄Π΅, ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
Π‘ΡΡΠ»ΠΊΠΈ[Meyers96] Β§21 β’ [Stroustrup00] Β§11.4, Β§C.6 β’ [Sutter00] Β§6
30. ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ &&, || ΠΈ , (Π·Π°ΠΏΡΡΠΎΠΉ)
ΠΡΠ΄ΡΠΎΡΡΡ β ΡΡΠΎ Π·Π½Π°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ Π²ΠΎΠ·Π΄Π΅ΡΠΆΠ°ΡΡΡΡ. ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ &&, || ΠΈ , (Π·Π°ΠΏΡΡΠ°Ρ) ΡΡΠ°ΠΊΡΡΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΠΎΠ½ΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Ρ Π²Π΅ΡΡΠΌΠ° ΠΎΡΠ»ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΎΠΉ (ΠΏΡΠΈ ΡΡΠΎΠΌ Π²Ρ Π½Π°ΡΡΡΠ°Π΅ΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ 26 ΠΈ 31), Π° ΡΡΠΎ ΠΏΡΡΠΌΠΎΠΉ ΠΏΡΡΡ ΠΊ ΡΡΡΠ΄Π½ΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌΡΠΌ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΈ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ. ΠΠ΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΠΉΡΠ΅ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π±Π΅Π· ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ.