Widget& Widget::operator=(const Widget& rhs)
{
Bitmap *pOrig = pb; // Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ pb
pb = new Bitmap(*rhs.pb); // ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ pb Π½Π° ΠΊΠΎΠΏΠΈΡ *pb
delete pOrig; // ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ pb
return *this;
}
Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Β«new BitmapΒ» Π²ΠΎΠ·Π±ΡΠ΄ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΠΎ pb (ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Widget, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ) ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌ. ΠΠ°ΠΆΠ΅ Π±Π΅Π· ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π·Π΄Π΅ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΌΡ ΡΠ΅Π±Π΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΊΠΎΠΏΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Bitmap, ΡΠ΄Π°Π»ΠΈΠ»ΠΈ Π΅Π³ΠΎ, Π° Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ΄Π΅Π»Π°Π½Π½ΡΡ ΠΊΠΎΠΏΠΈΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π½Π΅ ΡΠ°ΠΌΡΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΌΡ ΡΠ΅Π±Π΅, Π½ΠΎ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΡ ΠΎΠ± ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π½Π° ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠΏΡΠΎΡΠΈΡΠ΅ ΡΠ΅Π±Ρ, ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΌΡ ΡΠ΅Π±Π΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠΆΠ΅ Π½Π΅ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡΡ Π΄Π°ΡΠΎΠΌ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ (ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ) ΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅, Π° Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΡΠ°Π΄Π°ΡΡ.
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ ΡΡΡΠ½ΠΎΠΌΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² operator= ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π² ΡΠΌΡΡΠ»Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΠΌΠΎΠΌΡ ΡΠ΅Π±Π΅ Π·Π° ΡΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Β«ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌΒ» (Β«copy and swapΒ»). ΠΠ½Π° ΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Π° Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ Π² ΡΠΌΡΡΠ»Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΏΡΠ°Π²ΠΈΠ»Π΅ 29. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ operator=, ΠΈ Π½Π° Π½Π΅Π³ΠΎ ΡΡΠΎΠΈΡ Π²Π·Π³Π»ΡΠ½ΡΡΡ:
class Widget {
...
void swap(Widget& rhs); // ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ *this ΠΈ rhs
... // ΡΠΌ. ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π² ΠΏΡΠ°Π²ΠΈΠ»Π΅ 29
};
Widget& Widget:: operator=(const Widget& rhs)
{
Widget temp(rhs); // ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠΏΠΈΡ Π΄Π°Π½Π½ΡΡ rhs
swap(tmp); // ΠΎΠ±ΠΌΠ΅Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ *this Ρ ΠΊΠΎΠΏΠΈΠ΅ΠΉ
return *this;
}
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ: (1) ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ (2) ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° (ΡΠΌ. ΠΏΡΠ°Π²ΠΈΠ»ΠΎ 20):
Widget& Widget::operator=(Widget rhs) // rhs β ΠΊΠΎΠΏΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
{ // ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠΎ
// Π·Π½Π°ΡΠ΅Π½ΠΈΡ
swap(rhs); // ΠΎΠ±ΠΌΠ΅Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ *this Ρ ΠΊΠΎΠΏΠΈΠ΅ΠΉ
return *this;
}
ΠΠΈΡΠ½ΠΎ ΠΌΠ΅Π½Ρ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΡΡΠ½ΠΎΡΡΡ Π² ΠΆΠ΅ΡΡΠ²Ρ ΠΈΠ·ΠΎΡΡΠ΅Π½Π½ΠΎΡΡΠΈ, Π½ΠΎ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· ΡΠ΅Π»Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄.
Π§ΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡβ’ Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ operator= ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΌΠΎΠΌΡ ΡΠ΅Π±Π΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ Π°Π΄ΡΠ΅ΡΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΈΠ΄ΠΈΠΎΠΌΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ.
β’ Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΠ΅ΡΠΈΡΡΡΡΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΠΎΠ΄Π½ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ Π΄Π²ΡΡ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΡΠ°Π²ΠΈΠ»ΠΎ 12: ΠΠΎΠΏΠΈΡΡΠΉΡΠ΅ Π²ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
Π Ρ ΠΎΡΠΎΡΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ: ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ. ΠΠ°Π·ΠΎΠ²Π΅ΠΌ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π ΠΏΡΠ°Π²ΠΈΠ»Π΅ 5 Ρ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΈ ΠΎΠ±ΡΡΡΠ½ΡΠ», ΡΡΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π²Π΅ΡΡΠΈΠΈ Π΄Π΅Π»Π°ΡΡ ΡΠΎΡΠ½ΠΎ ΡΠΎ, ΡΡΠΎ Π²Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΠ΅: ΠΊΠΎΠΏΠΈΡ Π²ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠ±ΡΡΠ²Π»ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²Ρ ΡΠΎΠΎΠ±ΡΠ°Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²Π°ΠΌ ΡΠ΅ΠΌ-ΡΠΎ Π½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Β«ΠΎΠ±ΠΈΠΆΠ°Π΅ΡΡΡΒ» ΠΈ ΠΌΡΡΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: ΠΎΠ½ Π½Π΅ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ, Π΅ΡΠ»ΠΈ Π² Π²Π°ΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎ-ΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠΎΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π²ΡΡΡΠ½ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΈΡ Π²ΡΠ·ΠΎΠ²Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΡΡΡΡΡ:
void logCall(const std::string& funcName); // Π΄Π΅Π»Π°Π΅Ρ Π·Π°ΠΏΠΈΡΡ Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»
class Customer {
public:
...
Customer(const Customer& rhs);
Customer& operator=(const Customer& rhs);
...
private:
std::string name;
};
Customer::Customer(const Customer& rhs)
: name(rhs.name) // ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ rhs
{
logCall(βΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Customerβ);
}
Customer& Customer::operator=(const Customer& rhs)
{
logCall(βΠΠΎΠΏΠΈΡΡΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ Customerβ);
name = rhs.name; // ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ rhs
return *this; // ΡΠΌ. ΠΏΡΠ°Π²ΠΈΠ»ΠΎ 10
}
ΠΡΠ΅ Π·Π΄Π΅ΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ, ΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ°ΠΊ ΠΎΠ½ΠΎ ΠΈ Π΅ΡΡΡ β Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π² ΠΊΠ»Π°ΡΡ Customer Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅Π½:
class Date {...}; // Π΄Π»Ρ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
class Customer {
public:
... // ΠΊΠ°ΠΊ ΡΠ°Π½ΡΡΠ΅
private:
std::string name;
Date lastTransaction;
};
Π‘ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΏΠΈΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅ name, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ»Π΅ lastTransaction. ΠΠ΄Π½Π°ΠΊΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΊΠ°ΠΆΡΡ ΠΎΠ± ΡΡΠΎΠΌ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ (ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ 53). ΠΠΎΡ ΠΊ ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡ ΠΎΡΠ²Π΅ΡΠ³Π°Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ Π½Π΅ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π΅ ΠΏΠΎΠ»ΠΎΠ½. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ: Π΅ΡΠ»ΠΈ Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅Π½ Π² ΠΊΠ»Π°ΡΡ, ΡΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ [ΡΠΌ. ΠΏΡΠ°Π²ΠΈΠ»Π° 4 ΠΈ 45] ΠΈ Π²ΡΠ΅ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ operator= Π² ΠΊΠ»Π°ΡΡΠ΅ [ΠΏΡΠΈΠΌΠ΅Ρ Π² ΠΏΡΠ°Π²ΠΈΠ»Π΅ 10]; Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°Π±ΡΠ΄Π΅ΡΠ΅, ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΡΠ΄ Π»ΠΈ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ).
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ²Π°ΡΠ½ΡΡ ΡΠ»ΡΡΠ°Π΅Π² ΠΏΡΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
class PriorityCustomer: public Customer { // ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ
public:
...
PriorityCustomer(const PriorityCustomer& rhs);
PriorityCustomer& operator=(const PriorityCustomer& rhs);
...
private:
int priority;
};
PriorityCustomer::PriorityCustomer(const PriorityCustomer& rhs)
: priority(rhs.priority)
{
logCall(βΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ PriorityCustomerβ);
}
PriorityCustomer&
PriorityCustomer::operator=(const PriorityCustomer& rhs)
{
logCall(βΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ PriorityCustomerβ);
priority = rhs. Priority;
return *this;
}
ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ PriorityCustomer ΠΊΠΎΠΏΠΈΡΡΡΡ Π²ΡΠ΅ Π΅Π³ΠΎ ΡΠ»Π΅Π½Ρ, Π½ΠΎ ΠΏΡΠΈΠ³Π»ΡΠ΄ΠΈΡΠ΅ΡΡ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Π΅Π΅. ΠΠ°, ΠΎΠ½ΠΈ ΠΊΠΎΠΏΠΈΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅-ΡΠ»Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Π² PriorityCustomer, Π½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ PriorityCustomer ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π½Ρ, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΡ Customer, Π° ΠΎΠ½ΠΈ-ΡΠΎ Π½Π΅ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ Π²ΠΎΠ²ΡΠ΅! ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ PriorityCustomer Π½Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° (ΡΠΎ Π΅ΡΡΡ Π½Π΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Customer Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π½ΠΎΠ²), ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΡΡΡ Customer ΠΎΠ±ΡΠ΅ΠΊΡΠ° PriorityCustomer Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ Customer, Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ). ΠΡΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ»Π΅Π½ΠΎΠ² name ΠΈ lastTransaction.
ΠΠ»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ PriorityCustomer ΡΠΈΡΡΠ°ΡΠΈΡ ΠΌΠ°Π»ΠΎ ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ. ΠΠ½ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠΎΠΏΡΡΠΎΠΊ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅-ΡΠ»Π΅Π½Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ ΠΎΡΡΠ°ΡΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌΠΈ.
ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΏΠΎΠ·Π°Π±ΠΎΡΡΡΠ΅ΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ½ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² Π·Π°ΠΊΡΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΊΠ»Π°ΡΡΠ° (ΡΠΌ. ΠΏΡΠ°Π²ΠΈΠ»ΠΎ 22), ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π²Π°Ρ Π½Π΅Ρ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½ΠΈΠΌ. ΠΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°:
PriorityCustomer::PriorityCustomer(const PriorityCustomer& rhs)
: Customer(rhs), // Π²ΡΠ·Π²Π°ΡΡ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ
// Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°
priority(rhs.priority)
{
logCall(βΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ PriorityCustomerβ);
}
PriorityCustomer&
PriorityCustomer::operator=(const PriorityCustomer& rhs)
{
logCall(βΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ PriorityCustomerβ);
Customer::operator=(rhs); // ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΠΌ-ΡΠ»Π΅Π½Π°ΠΌ
// Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°
priority = rhs. Priority;
return *this;
}
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π·Ρ Β«ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠ°ΡΡΠΈΒ» Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ° ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎ. ΠΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ (1) ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ Π²ΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅-ΡΠ»Π΅Π½Ρ ΠΈ (2) Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ΅Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΡΠΈ Π΄Π²Π΅ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΎ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈ Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΠΎΠ±Π»Π°Π·Π½ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π·Π° ΡΡΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ. Π’Π°ΠΊΠΎΠ΅ ΡΡΡΠ΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ Π²Π°Π»ΡΠ½ΠΎ, Π½ΠΎ Π²ΡΠ·ΠΎΠ² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΡΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ β Π½Π΅Π²Π΅ΡΠ½ΡΠΉ ΠΏΡΡΡ.
ΠΠ΅Ρ ΡΠΌΡΡΠ»Π° Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΡΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. ΠΡΠΎ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΠΎ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π΄Π»Ρ ΡΠ°ΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ, Π±ΡΠ΄ΡΠΎ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΡΡΠΎ, Ρ ΠΎΡΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ½ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΈΠ½ΠΎΠ΅. ΠΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π½ΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΏΡΠΈΡΠ΅ΠΌ ΠΏΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π²Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½. ΠΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΡ Π½ΠΈ ΡΠΎΡ, Π½ΠΈ Π΄ΡΡΠ³ΠΎΠΉ. ΠΡΠΎΡΡΠΎ ΠΏΡΠΈΠΌΠΈΡΠ΅ ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΠΎΡΡΡ, ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ.