ΠΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π²ΡΠ΅ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ: Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° ΠΈΠ· Π½ΠΈΡ , Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π²ΡΠ΅. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ. ΠΡΠ»ΠΈ Π½ΡΠΆΠ΅Π½ ΠΎΠ΄ΠΈΠ½, Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈΡ Π²ΡΠ΅.
ΠΠ»Π°ΡΡΡ, Π½ΡΠΆΠ΄Π°ΡΡΠΈΠ΅ΡΡ Π² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ°Ρ , Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π² ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠΈΠΠΎΡ ΡΠΌΠΏΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ ΠΏΡΠΈ ΠΏΡΠΈΠ½ΡΡΠΈΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ: ΡΠ½Π°ΡΠ°Π»Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΅ΡΠΈΡΡ, Π½ΡΠΆΠ΅Π½ Π»ΠΈ ΠΊΠ»Π°ΡΡΡ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ. ΠΠ°ΡΠ°ΡΡΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°, ΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠΎΠΏΠΈΠΉ. ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ΅, ΠΎΠ½ ΠΏΠΎΡΡΠΈ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠΎΠΏΠΈΠΉ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡΡ ΠΊΠ»Π°ΡΡ HasPtr ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 13.1.1). ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠ°ΠΌΡΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅. Π‘ΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΠΌΡΠΉ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ-ΡΠ»Π΅Π½. ΠΠΎΡΡΠΎΠΌΡ Π΄Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ Π΄Π»Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ.
Π₯ΠΎΡΡ ΡΡΠΎ ΠΈ Π½Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π½ΠΎ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠΌΠΏΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΏΡΠ°Π²ΠΈΠ»Ρ ΠΊΠ»Π°ΡΡ HasPtr Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠΎΠΏΠΈΠΉ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ, Π΅ΡΠ»ΠΈ Π±Ρ Ρ ΠΊΠ»Π°ΡΡΠ° HasPtr Π±ΡΠ» Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ ΠΈ ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΠΌΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΊΠΎΠΏΠΈΠΉ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ:
class HasPtr {
public:
HasPtr(const std::string &s = std::string()):
ps(new std::string(s)), i(0) { }
~HasPtr() { delete ps; }
// ΠΎΡΠΈΠ±ΠΊΠ°: HasPtr Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠΎΠΏΠΈΠΉ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅
// ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ
// Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»Π΅Π½Ρ, ΠΊΠ°ΠΊ ΠΏΡΠ΅ΠΆΠ΄Π΅
};
Π ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΏΠ°ΠΌΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½Π° ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° HasPtr. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π·Π΄Π΅ΡΡ Π΅ΡΡΡ ΡΠ΅ΡΡΠ΅Π·Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°! ΠΠ°Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΠΌΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠΏΠΈΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ-ΡΠ»Π΅Π½Ρ, Π° Π·Π½Π°ΡΠΈΡ, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° HasPtr ΡΠΌΠΎΠ³ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΡΡ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ:
HasPtr f(HasPtr hp) // HasPtr ΠΏΠ΅ΡΠ΅Π΄Π°Π½ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½
// ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ
{
HasPtr ret = hp; // ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π΄Π°Π½Π½ΡΠΉ HasPtr
// ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ret
return ret; // ret ΠΈ hp ΡΠ΄Π°Π»ΡΡΡΡΡ
}
ΠΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΡ f() Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ, ΠΎΠ±ΡΠ΅ΠΊΡΡ hp ΠΈ ret ΡΠ΄Π°Π»ΡΡΡΡΡ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° HasPtr Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ . ΠΡΠΎΡ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ ΡΠ΄Π°Π»ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ-ΡΠ»Π΅Π½ ΠΈ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ret, ΠΈ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ hp. ΠΠΎ ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ. ΠΠΎΠ΄ ΡΠ΄Π°Π»ΠΈΡ ΡΠΎΡ ΠΆΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π΄Π²Π°ΠΆΠ΄Ρ, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 12.1.2) Ρ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²ΡΠ·ΡΠ²Π°ΡΡΠ°Ρ ΡΡΠΎΡΠΎΠ½Π° ΡΡΠ½ΠΊΡΠΈΠΈ f() ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ Π΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ:
HasPtr p("some values");
f(p); // ΠΏΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ f() ΠΏΠ°ΠΌΡΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ p.ps,
// ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΡΡ
HasPtr q(p); // ΡΠ΅ΠΏΠ΅ΡΡ ΠΈ p, ΠΈ q ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ ΠΏΠ°ΠΌΡΡΡ!
ΠΠ°ΠΌΡΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ p (ΠΈ q), Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°. ΠΠ½Π° Π±ΡΠ»Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ» ΡΠ΄Π°Π»Π΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡ hp (ΠΈΠ»ΠΈ ret)!
ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ΅, ΠΎΠ½ ΠΏΠΎΡΡΠΈ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠΎΠΏΠΈΠΉ.
ΠΠ»Π°ΡΡΡ, Π½ΡΠΆΠ΄Π°ΡΡΠΈΠ΅ΡΡ Π² ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, Π½ΡΠΆΠ΄Π°ΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π² ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠΈ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡΠ₯ΠΎΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (ΠΈΠ»ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ ), Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π½ΠΎ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ΅.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡ, ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ²ΠΎΠ΅ΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ. Π’Π°ΠΊΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ Π½ΡΠΆΠ΅Π½ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅ΡΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π» Π±Ρ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅-ΡΠ»Π΅Π½Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ»Π°ΡΡ Π½ΡΠΆΠ΄Π°Π»ΡΡ Π±Ρ ΡΠ°ΠΊΠΆΠ΅ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ»Π΅Π²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅ΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ Π±ΡΠ»ΠΎ Π±Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ Π² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ΅.
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ Π²ΡΠΎΡΠΎΠ΅ ΡΠΌΠΏΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ: Π΅ΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠΎΠΏΠΈΠΉ, ΡΠΎ ΠΎΠ½ ΠΏΠΎΡΡΠΈ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, β Π΅ΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ, ΡΠΎ ΠΎΠ½ ΠΏΠΎΡΡΠΈ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠΎΠΏΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ Π½ΡΠΆΠ΄Π° Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠΎΠΏΠΈΠΉ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ Π² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ΅.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π° 13.1.4Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 13.14. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ numbered ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΉ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ-ΡΠ»Π΅Π½Π΅ mysn. ΠΠ»Π°ΡΡ numbered ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
void f(numbered s) { cout << s.mysn << endl; }
ΠΠ°ΠΊΠΎΠΉ Π²ΡΠ²ΠΎΠ΄ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄?
numbered a, b = a, Ρ = b;
f(a); f(b); f(c);
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 13.15. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Ρ ΠΊΠ»Π°ΡΡΠ° numbered Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΠΉ, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΉ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ. ΠΠ·ΠΌΠ΅Π½ΠΈΡ Π»ΠΈ ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΈ? ΠΡΠ»ΠΈ Π΄Π°, ΡΠΎ ΠΏΠΎΡΠ΅ΠΌΡ? ΠΠ°ΠΊΠΎΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ?
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 13.16. Π§ΡΠΎ Π΅ΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ f() Π±ΡΠ΄Π΅Ρ const numbered&? ΠΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π²ΡΠ²ΠΎΠ΄? ΠΡΠ»ΠΈ Π΄Π°, ΡΠΎ ΠΏΠΎΡΠ΅ΠΌΡ? ΠΠ°ΠΊΠΎΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ?
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 13.17. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° numbered ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ f(), ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡΠΌ, ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π°.
13.1.5. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° = default
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ = default, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΠΌΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 7.1.4):
class Sales_data {
public:
// ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ; Π²Π΅ΡΡΠΈΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
Sales_data() = default;
Sales_data(const Sales_data&) = default;
Sales_data& operator=(const Sales_data &);
~Sales_data() = default;
// Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»Π΅Π½Ρ ΠΊΠ°ΠΊ ΠΏΡΠ΅ΠΆΠ΄Π΅
};
Sales_data& Sales_data::operator=(const Sales_data&) = default;
ΠΠΎΠ³Π΄Π° Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Π° Π² ΡΠ΅Π»Π΅ ΠΊΠ»Π°ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ = default, ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ΡΠ²Π½ΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ (ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ Π² ΡΠ΅Π»Π΅ ΠΊΠ»Π°ΡΡΠ°). ΠΡΠ»ΠΈ ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ°ΡΡΡ = default Π² Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ.
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ = default ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΠΌΠ°Ρ Π²Π΅ΡΡΠΈΡ (Ρ.Π΅. ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ).
13.1.6. ΠΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ (ΡΠ²Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΠΎ) ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΠΉ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ.
Π₯ΠΎΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ (ΠΈ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ) ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΠΉ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ, Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π΅Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΡ . Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°ΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ»Π°ΡΡΡ iostream ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°ΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΏΠΈΡΠ°ΡΡ ΠΈΠ»ΠΈ ΡΠΈΡΠ°ΡΡ ΠΈΠ· ΡΠΎΠ³ΠΎ ΠΆΠ΅ Π±ΡΡΠ΅ΡΠ° Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°. ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΠΎ ΡΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ: Π΅ΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅Ρ ΠΈΡ ΡΠ°ΠΌ.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉΠΠΎ Π½ΠΎΠ²ΠΎΠΌΡ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΠΉ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ ΠΊΠ°ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (deleted function). Π£Π΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π°, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π½ΠΈΠΊΠ°ΠΊΠΈΠΌ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ°ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ, Π·Π° ΡΠΏΠΈΡΠΊΠΎΠΌ Π΅Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΡΠ°ΡΡΡ = delete:
struct NoCopy {
NoCopy() = default; // ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ
// ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ
NoCopy(const NoCopy&) = delete; // Π±Π΅Π· ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ
NoCopy &operator=(const NoCopy&) = delete; // Π±Π΅Π· ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ
~NoCopy() = default; // ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΠΌΡΠΉ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ