C ++ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕


C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрд▓рд╛рд╕реЗрд╕ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдЕрдХреНрд╕рд░ рдЧрд▓рддрд┐рдпрд╛рдВ рдХреА рдЬрд╛рддреА рд╣реИрдВред рд▓реЗрдЦ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреИрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рдП? рдХрдИ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдЕрдкрд╡рд╛рдж рд╡рд░реНрдЧ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╡рд░реНрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред




рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛


рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛
рдкрд░рд┐рдЪрдп
1. рд╡рд┐рд╢реЗрд╖ рд╕рджрд╕реНрдп рдХрд╛рд░реНрдп, рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛
1.1ред рд╡рд┐рд╢реЗрд╖ рд╕рджрд╕реНрдп рдХреЗ рдХрд╛рд░реНрдп
1.2ред рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛ - рдореВрд▓ рд╡рд┐рд╡рд░рдг
1.3ред рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдкрд╣реБрдВрдЪ рд╕реНрддрд░
1.4ред рдПрдХ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдВ рдФрд░ рд╣рдЯрд╛рдПрдВ
1.5ред рдмрд╣реБрд░реВрдкреА рд╡рд┐рд▓реЛрдкрди
1.6ред рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдЕрдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ рд╣рдЯрд╛рдирд╛
2. рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдп рдФрд░ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ
2.1ред рд╢реБрджреНрдз рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдп
2.2ред рд╕рд╛рд░ рд╡рд░реНрдЧ
2.3ред рд╢реБрджреНрдз рдЖрднрд╛рд╕реА рд╡рд┐рдзреНрд╡рдВрд╕рдХ
3. рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдПрдВ
3.1ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
3.2ред рд╡рд╕реНрддреБ рдирд┐рд░реНрдорд╛рдг
3.3ред рд╡рд╕реНрддреБ рд╣рдЯрд╛рдУ
3.3.1ред рдбрд┐рд▓реАрдЯ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
3.3.2ред рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЖрднрд╛рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
3.3.3ред рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
3.3.4ред рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдЯреЛ рдбрд┐рд▓реАрдЯ
3.4ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк
3.5ред рдирдХрд▓ рд╢рдмреНрджрд╛рд░реНрде
3.6ред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдирд┐рд░реНрдорд╛рддрд╛
3.7ред рджреНрд╡рд┐рджрд┐рд╢ рдмрд╛рддрдЪреАрдд
3.8ред рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕
3.9ред рд▓рдЧрд╛рддрд╛рд░ рд╕рджрд╕реНрдп рдХрд╛рд░реНрдп
3.10ред COM рдЗрдВрдЯрд░рдлреЗрд╕
3.11ред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп
4. рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
4.1ред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ
4.2ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ
4.3ред рдорд╛рдирдХ рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕
4.3.1ред рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдирд┐рд░реНрдорд╛рдг
4.3.2ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрдХреНрд╖ рдирд┐рд░реНрдорд╛рдг
4.4ред рд╡реИрдХрд▓реНрдкрд┐рдХ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
5. рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрд╡рд╛рдж рдФрд░ рд╕рдВрдЧреНрд░рд╣ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП
5.1 рдЕрдкрд╡рд╛рдж
5.2 рд╕рдВрдЧреНрд░рд╣
6. рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдЖрд╡рд░рдг рдХрдХреНрд╖рд╛рдПрдВ
7. рд╕рд╛рд░рд╛рдВрд╢
рд╕рдВрджрд░реНрдн


рдкрд░рд┐рдЪрдп


рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдПрдХ рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░ рдПрдХ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд╝реИрдХреНрдЯрд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдЧреНрд░рд╛рд╣рдХ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИред рдЗрд╕ рддрд░рд╣, рд╕рдЪреНрдЪрд╛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрднрд╡ рд╣реИред рдЖрдк рд╕реНрдХреЙрдЯ рдореЗрдпрд░реНрд╕ [рдореЗрдпрд░реНрд╕ 2] рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрдХреНрд╖рд╛рдПрдВ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдХрдордЬреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЯреАрдо рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рди / рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕рдордп рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдПрдВ рд▓рдЪреАрд▓рд╛, рдЧрддрд┐рд╢реАрд▓ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддреА рд╣реИрдВ, рдЬрдм рдореЙрдбреНрдпреВрд▓ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЪреБрдирд┐рдВрджрд╛ рддрд░реАрдХреЗ рд╕реЗ рд▓реЛрдб рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдПрдкреАрдЖрдИ) рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдПрд╕рдбреАрдХреЗ) рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред


рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдПрдВ рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЙрдирдХреА рдорджрдж рд╕реЗ рд╡реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (рдПрд╕рдбреАрдХреЗ) рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдПрдкреАрдЖрдИ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд▓рдЧ-рдЗрди (рдкреНрд▓рдЧрдЗрдиреНрд╕) рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рдХрдИ рдЧреИрдВрдЧ рдСрдлрд╝ рдлреЛрд░ [GoF] рдкреИрдЯрд░реНрди рдХреЛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ COM рдЗрдВрдЯрд░рдлреЗрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдЕрдХреНрд╕рд░ рдЧрд▓рддрд┐рдпрд╛рдВ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЖрдЗрдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред



1. рд╡рд┐рд╢реЗрд╖ рд╕рджрд╕реНрдп рдХрд╛рд░реНрдп, рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛


рдпрд╣ рдЦрдВрдб рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрдИ рд╕реА ++ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред



1.1ред рд╡рд┐рд╢реЗрд╖ рд╕рджрд╕реНрдп рдХреЗ рдХрд╛рд░реНрдп


рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдирд┐рдореНрди рд╕реВрдЪреА рдореЗрдВ рд╕реЗ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рджрд╕реНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░, рдХреЙрдкреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░, рдХреЙрдкреА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░, рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░ - рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред C ++ 11 рдиреЗ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рдореВрд╡ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдФрд░ рдореВрд╡ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рд╛ред рдЗрди рд╕рджрд╕реНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд╕рджрд╕реНрдп рдХрд╛рд░реНрдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдХреЗрд╡рд▓ рддрднреА рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢рд░реНрддреЗрдВ рдкреВрд░реА рд╣реЛрддреА рд╣реИрдВред рд╣рдо рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд╛рдлреА рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реБрдП)ред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рдВрдХреНрд╢рди рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред (рд░рд┐рд▓реЛрдХреЗрд╢рди рдСрдкрд░реЗрд╢рдВрд╕ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдЙрдиреНрд╣реЗрдВ рдСрдкрд░реЗрд╢рди рдХреЛ рдХреЙрдкреА рдХрд░рдХреЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред) рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╕рджрд╕реНрдп рдлрд╝рдВрдХреНрд╢рди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрддреЗ рд╣реИрдВред


рд╡рд┐рд╢реЗрд╖ рд╕рджрд╕реНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рдпрджрд┐ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рджрд╕реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣рдореЗрд╢рд╛ рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛; рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдВрдмрдВрдзрд┐рдд рд╕рджрд╕реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЗрд╕ рдкрд░ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдбрд╛рд▓рддреА рд╣реИред


рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╡рд┐рд╢реЗрд╖ рд╕рджрд╕реНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреА рдкреАрдврд╝реА рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, C ++ 11 рдореЗрдВ рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп "=delete" рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, C ++ 98 рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╕рджрд╕реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдЬреА рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рди рдХрд░реЗрдВред рдХреНрд▓рд╛рд╕ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдореЗрдВ, рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдХрд┐рдП рдЧрдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рджрд╕реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреА рдордирд╛рд╣реА рд╕рднреА рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред


рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╕рджрд╕реНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣рдЬ рд╣реИ, рддреЛ C ++ 11 рдореЗрдВ рд╡рд╣ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ рдШреЛрд╖рдгрд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп "=default" рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдмрдХрд┐ рдХреЛрдб рдмреЗрд╣рддрд░ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрддрд░ рдПрдХреНрд╕реЗрд╕ рд╕реНрддрд░ рдХреЗ рдкреНрд░рдмрдВрдзрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред


рд╡рд┐рд╢реЗрд╖ рд╕рджрд╕реНрдп рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╡рд┐рд╡рд░рдг [Meyers3] рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



1.2ред рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛ - рдореВрд▓ рд╡рд┐рд╡рд░рдг


new/delete рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреВ-рдЗрди-рд╡рди рдСрдкрд░реЗрд╢рди рд╣реИред new рдХреЙрд▓ new , рдореЗрдореЛрд░реА рдХреЛ рдкрд╣рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЪрдпрди рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдирд┐рд░реНрдорд╛рддрд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИ, рддреЛ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм delete рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ: рдкрд╣рд▓реЗ, рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдпрджрд┐ new рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореЗрдореЛрд░реА рдХреЛ рдкрд╣рд▓реЗ рдкреВрд░реЗ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЪрдпрди рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рднреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИ, рддреЛ рд╕рд░рдгреА рдХреЗ рд╕рднреА рдмрдирд╛рдП рдЧрдП рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЙрд▓ рдХреЗ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ delete[] рдСрдкрд░реЗрдЯрд░ (рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП delete рдСрдкрд░реЗрдЯрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╕рд░рдгреА рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЙрд▓ рдХреЗ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЪреЗрддрд╛рд╡рдиреА! рдЖрдкрдХреЛ delete рдСрдкрд░реЗрдЯрд░ рдХрд╛ рд╕рд╣реА рдлреЙрд░реНрдо рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдПрд░реЗ рдбрд┐рд▓реАрдЯ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЗрд╕ рдирд┐рдпрдо рдХреЛ рд╕рдЦреНрддреА рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдЖрдк рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рд╕реНрдореГрддрд┐ рд▓реАрдХ, рджреБрд░реНрдШрдЯрдирд╛, рдЖрджрд┐ред рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП [Meyers2] рджреЗрдЦреЗрдВред


рдорд╛рдирдХ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ std::bad_alloc рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ std::bad_alloc рд╣реЛрддреЗ рд╣реИрдВред


delete рдСрдкрд░реЗрдЯрд░ рдХреЗ рдХрд┐рд╕реА рднреА рд░реВрдк рдХреЛ рдирд▓ рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред


рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рд╡рд░рдг рдореЗрдВ, рдПрдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИред рддрдерд╛рдХрдерд┐рдд рддреБрдЪреНрдЫ рдкреНрд░рдХрд╛рд░реЛрдВ (рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░, рд╕реА-рд╢реИрд▓реА рд╕рдВрд░рдЪрдирд╛рдУрдВ) рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЦрдВрдб 1.6 рднреА рджреЗрдЦреЗрдВред



1.3ред рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдкрд╣реБрдВрдЪ рд╕реНрддрд░


рдЬрдм delete рдСрдкрд░реЗрдЯрд░ рдХреЛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╕реЗ рдПрдХ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░ delete рдХреЙрд▓ рдкреЙрдЗрдВрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред (рдЗрд╕ рдирд┐рдпрдо рдХреЗ рдХреБрдЫ рдЕрдкрд╡рд╛рдж рд╣реИрдВ, рдЦрдВрдб 1.6 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред) рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдпрд╛ рдмрдВрдж рдХрд░рдХреЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ delete рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рд╡рд░реНрдЧ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕рдВрдХрд▓рдХ рдЕрдкрдиреЗ рдЖрдк рдРрд╕рд╛ рдХрд░реЗрдЧрд╛, рдФрд░ рдпрд╣ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдЦреБрд▓рд╛ рд╣реЛрдЧрд╛ (рджреЗрдЦреЗрдВ рдЦрдВрдб 1.1)ред



1.4ред рдПрдХ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдВ рдФрд░ рд╣рдЯрд╛рдПрдВ


рдпрджрд┐ new рдСрдкрд░реЗрдЯрд░ рдиреЗ рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ delete рд▓рд┐рдП delete рдСрдкрд░реЗрдЯрд░ рдЙрд╕реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдВрдХрд┐рдХ рд░реВрдк рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, "рдЬрд╣рд╛рдВ рдЖрдкрдиреЗ рдЗрд╕реЗ рд▓рд┐рдпрд╛ рдерд╛, рдЙрд╕реЗ рдбрд╛рд▓ рджрд┐рдпрд╛ред" рдпрд╣ рдирд┐рдпрдо рд╕рд░реНрд╡рд╡рд┐рджрд┐рдд рд╣реИ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, [рд╕рдЯрд░ / рдЕрд▓реЗрдХреНрдЬреЗрдВрдбреНрд░реЗрд╕реНрдХреБ] рджреЗрдЦреЗрдВред рдпрджрд┐ рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдореГрддрд┐ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдФрд░ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ "рдмреЗрдореЗрд▓" рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЕрд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдкреНрддрд┐ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред



1.5ред рдмрд╣реБрд░реВрдкреА рд╡рд┐рд▓реЛрдкрди


рдпрджрд┐ рдЖрдк рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреА рдмрд╣реБрд░реВрдкреА рдкрджрд╛рдиреБрдХреНрд░рдо рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдбрд┐рд▓реАрдЯ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдПрдХ рдЦреБрд▓рд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ delete рдСрдкрд░реЗрдЯрд░ рдХреЛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдкреЙрдЗрдВрдЯрд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд░рд┐рд╕реЛрд░реНрд╕ рд▓реАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред



1.6ред рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдЕрдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ рд╣рдЯрд╛рдирд╛


delete рдСрдкрд░реЗрдЯрд░ рдХреА рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреАрддрд╛ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреА рд╣реИ; рдЗрд╕реЗ рдЯрд╛рдЗрдк void* рдкреЙрдЗрдВрдЯрд░ рдкрд░ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рдЕрдзреВрд░рд╛ (рдкреНрд░реАрдореЗрдкреНрдЯрд┐рд╡) рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдмрд╕ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдХреЙрд▓ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


 class X; //   X* CreateX(); void Foo() {    X* p = CreateX();    delete p; } 

рдпрд╣ рдХреЛрдб рдЙрд╕ рд╕рдордп рднреА рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрдм delete рдбрд╛рдпрд▓ рдкреАрдпрд░ рдкрд░ рдПрдХ рдкреВрд░реНрдг X рд╢реНрд░реЗрдгреА рдХреА рдШреЛрд╖рдгрд╛ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рд╕рдЪ рд╣реИ, рдЬрдм рд╕рдВрдХрд▓рди (рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ) рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИ:


warning C4150: deletion of pointer to incomplete type 'X'; no destructor called


рдпрджрд┐ X рдФрд░ CreateX() рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреЛрдб CreateX() , рдпрджрд┐ CreateX() new рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддреЛ Foo() рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдХрдореА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдпрд╣ рд╕реНрдерд┐рддрд┐ рджреВрд░ рдХреА рдХреМрдбрд╝реА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдпрд╛ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреНрд▓рд╛рд╕ рдЬреИрд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рд╕реНрдХреЙрдЯ рдореЗрдпрд░реНрд╕ [Meyers3] рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВред



2. рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдп рдФрд░ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ


рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдРрд╕реА рд╕реА ++ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдЬреЛ рд╢реБрджреНрдз рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╕рд╛рд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддреА рд╣реИред



2.1ред рд╢реБрджреНрдз рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдп


"=0" рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдПрдХ рдЖрднрд╛рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╢реБрджреНрдз рдЖрднрд╛рд╕реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред


 class X { // ...    virtual void Foo() = 0; }; 

рдПрдХ рдирд┐рдпрдорд┐рдд рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ (рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдЦрдВрдб 2.3 рджреЗрдЦреЗрдВ), рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреАрдХ Sutter рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ [рд╢рдЯрд░] рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред



2.2ред рд╕рд╛рд░ рд╡рд░реНрдЧ


рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдп рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╡рд░реНрдЧ рдЬреЛ рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рднреА рд╕рд╛рд░ рд╣реЛрдЧрд╛ред рд╕реА ++ рдорд╛рдирдХ рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддрд╛ рд╣реИ; рдЖрдк рдХреЗрд╡рд▓ рдЧреИрд░-рдЕрдореВрд░реНрдд рд╡рд░реНрдЧреЛрдВ рдХреЗ рдбреЗрд░рд┐рд╡реЗрдЯрд┐рд╡ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рдХреЛ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдпрджрд┐ рдПрдХ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред



2.3ред рд╢реБрджреНрдз рдЖрднрд╛рд╕реА рд╡рд┐рдзреНрд╡рдВрд╕рдХ


рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╢реБрджреНрдз рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдмрдирд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред


  1. рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ рдЖрдорддреМрд░ рдкрд░ "=default" рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред) рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЛ рд╕рдВрдкреВрд░реНрдг рд╡рд┐рд░рд╛рд╕рдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдХрддрд╛рд░ рдХреЛ рд░реВрдЯ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рддреА рд╣реИ - рдПрдХ рд╢реБрджреНрдз рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░ред
  2. рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рд╢реБрджреНрдз рдЖрднрд╛рд╕реА рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдХрд░реЗрдЧрд╛ (рджреЗрдЦреЗрдВ 1.1)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╡рд░реНрдЧ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рдирд╛рд╢рдХрд░реНрддрд╛ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдкрдиреА рдЕрдореВрд░реНрддрддрд╛ рдЦреЛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рд╢реБрджреНрдз рдЖрднрд╛рд╕реА рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЦрдВрдб 4.4 рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



3. рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдПрдВ


рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд░реНрдЧ рдореЗрдВ рд╕рд╛рдзрд╛рд░рдг рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдирд╣реАрдВ), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рдзреНрд╡рдВрд╕рдХред рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдЬреИрд╕реЗ рд╕реНрдерд┐рд░ рд╕рджрд╕реНрдп рдХрд╛рд░реНрдп рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред



3.1ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдПрдХ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╣реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдХрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рджреЛ рдпреЛрдЬрдирд╛рдПрдВ рд╕рдВрднрд╡ рд╣реИрдВ: рдХреНрд╖реИрддрд┐рдЬ, рдЬрдм рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЧ рдПрдХ рд╣реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ, рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░, рдЬрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдкреЙрд▓реАрдореЙрд░реНрдлрд┐рдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреА рдЬрдбрд╝ рд╣реИред рдмреЗрд╢рдХ, рд╕рдВрдХрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред


рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдкреВрд░реНрдг рдкреГрдердХреНрдХрд░рдг рд╣реИ - рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред



3.2ред рд╡рд╕реНрддреБ рдирд┐рд░реНрдорд╛рдг


рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдмрдирд╛рддреЗ рд╕рдордп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ рдХреА рджреБрд░реНрдЧрдорддрд╛ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдлрд╝реИрдХреНрдЯрд░реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрдХреНрд╖ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЖрдорддреМрд░ рдкрд░ new рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдбрд╛рд▓реА рдЧрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдПрдХ рдлреИрдХреНрдЯреНрд░реА рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рд╕реНрдерд┐рд░ рд╕рджрд╕реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлреИрдХреНрдЯреНрд░реА рдХреНрд▓рд╛рд╕ рдХрд╛ рд╕рджрд╕реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдЦреБрдж рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрд▓рд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдпрд╛ рдПрдХ рдореБрдлреНрдд рдлрд╝рдВрдХреНрд╢рдиред рдПрдХ рдлреИрдХреНрдЯреНрд░реА рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдХрдЪреНрдЪреЗ рд╕реВрдЪрдХ рдХреЛ рдирд╣реАрдВ рд▓реМрдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмреБрджреНрдзрд┐рдорд╛рди рд╣реИред рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреА рдЪрд░реНрдЪрд╛ рдЕрдиреБрднрд╛рдЧ 3.3.4 рдФрд░ 4.3.2 рдореЗрдВ рдХреА рдЧрдИ рд╣реИред



3.3ред рд╡рд╕реНрддреБ рд╣рдЯрд╛рдУ


рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рдПрдХ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдСрдкрд░реЗрд╢рди рд╣реИред рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдпрд╛ рджреЛрд╣рд░реЗ рд╡рд┐рд▓реЛрдкрди рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреНрд░реИрд╢ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдиреАрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЧрд▓рдд рдЧреНрд░рд╛рд╣рдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рд░реЛрдХрдерд╛рдо рдкрд░ рдмрд╣реБрдд рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред


рдЪрд╛рд░ рдореБрдЦреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:


  1. delete рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
  2. рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЖрднрд╛рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
  3. рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
  4. рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдЯреЛ рдбрд┐рд▓реАрдЯред


3.3.1ред delete рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдЦреБрд▓рд╛ рдЖрднрд╛рд╕реА рд╡рд┐рдзреНрд╡рдВрд╕рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ delete рдСрдкрд░реЗрдЯрд░, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреНрд▓рд╛рд╕ рдХреЗ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдХреЙрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рдлрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирдирд╛ рдХрдард┐рди рд╣реИред рд╣рдореЗрдВ "рдмрд╛рдзрд╛" рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкрдХреНрд╖реЛрдВ рдкрд░ new рдФрд░ delete рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдХреЙрд▓ рдорд┐рд▓рддреЗ рд╣реИрдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрдХреНрд╖ рдкрд░ new , рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдкрд░ delete ред рдФрд░ рдЕрдЧрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ (рдЬреЛ рдХрд┐ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рдмрд╛рдд рд╣реИ) рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЕрдиреБрднрд╛рдЧ 1.4 рд╕реЗ рдирд┐рдпрдо рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдорд┐рд▓рддрд╛ рд╣реИред



3.3.2ред рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЖрднрд╛рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЕрдзрд┐рдХ рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ: рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЖрднрд╛рд╕реА рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди, рдЕрдВрдд рдореЗрдВ, рдЗрд╕реЗ delete this рд▓рд┐рдП рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрдХреНрд╖ рдкрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реЛ рд░рд╣рд╛ рд╣реИред рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Delete() , рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: Release() , Destroy() , Dispose() , Free() , Close() , рдЖрджрд┐ред рдзрд╛рд░рд╛ 1.4 рдореЗрдВ рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╛рдпрджреЗ рд╣реИрдВред


  1. рдЖрдкрдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди / рдбреАрд▓рдХреНрд▓реЛрд▓реЗрд╢рди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  2. рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдпреЛрдЬрдирд╛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрджрд░реНрдн рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред

рдЗрд╕ рдЕрд╡рддрд╛рд░ рдореЗрдВ, delete рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреНрд░рджрд░реНрд╢рди рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЦрд╛рд▓реА рдпрд╛ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзреНрд╡рдВрд╕рдХ рд╣реЛрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ (рджреЗрдЦреЗрдВ рдЦрдВрдб 1.3)ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ delete рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рдлреА рдирдХрд╛рдмрдкреЛрд╢ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП delete рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реА рдХреЛрдб рдХреЛ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рджрдлрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдЖрдкрдХреЛ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдРрд╕реЗ рд╕рднреА рдкреНрд░рдпрд╛рд╕реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред



3.3.3ред рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдорд░реВрдкрддрд╛ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред



3.3.4ред рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдЯреЛ рдбрд┐рд▓реАрдЯ


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд╝реИрдХреНрдЯрд░реА рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдЪреНрдЪрд╛ рд╕реВрдЪрдХ рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдВрдЧрдд рд╕реНрдорд╛рд░реНрдЯ рд╕реВрдЪрдХ рд╣реИред рдпрд╣ рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрдХреНрд╖ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдбрд┐рд▓реАрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░ (рдпрд╛ рдЙрд╕рдХреА рдЖрдЦрд┐рд░реА рдХреЙрдкреА) рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рд╕реНрдХреЛрдк рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреА рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, delete рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЧрд▓рдд рдЙрдкрдпреЛрдЧ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред (рд╕рдЪ рд╣реИ, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛рдлреА рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред) рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдкрд░ рдЦрдВрдб 4.3.2 рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред



3.4ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк


рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорд╛рд▓рд┐рдХ рдирд╣реАрдВ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрдХреНрд╖ рдкрд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рд╕реНрдерд┐рд░ рд╕рд┐рдВрдЧрд▓рдЯрди рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ)ред рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рджреНрд╡рд┐рджрд┐рд╢ рдмрд╛рддрдЪреАрдд рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЦрдВрдб 3.7 рджреЗрдЦреЗрдВред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдРрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдРрд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕реЗ delete рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЧрд▓рдд рдЙрдкрдпреЛрдЧ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред



3.5ред рдирдХрд▓ рд╢рдмреНрджрд╛рд░реНрде


рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП, рдХреЙрдкреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХреЙрдкреА рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдХреНрд╕рд░ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдирд╛рдо Clone() рдпрд╛ Duplicate() ред


рдХреЙрдкреА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдирд┐рд╖рд┐рджреНрдз рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЙрдкреА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╣рдореЗрд╢рд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ; рдЗрд╕реЗ рдХреЙрдкреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдСрдкрд░реЗрдЯрд░ рдЕрд░реНрдерд╣реАрди рд╣реИ, рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рд░реВрдк рд╕реЗ рдмрд╛рдж рдореЗрдВ рдкреБрди: рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд░реНрдЪреБрдЕрд▓ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдПрдХ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЕрднреНрдпрд╛рд╕ рд╣реИ; рд╡рд┐рд╡рд░рдг [Meyers1] рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдмрд╣реБрдд рдЕрдкреНрд░рд╛рдХреГрддрд┐рдХ рджрд┐рдЦрддрд╛ рд╣реИ: рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЖрдорддреМрд░ рдкрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:


 * = *; 

рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд┐рд╖рд┐рджреНрдз рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИред


рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред


  1. рд╣рдЯрд╛рдП рдЧрдП рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╣рдЯрд╛рдПрдВ ( =delete )ред рдпрджрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдПрдВ рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдмрдирд╛рддреА рд╣реИрдВ, рддреЛ рдпрд╣ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рддрд┐рдмрдВрдз рднреА рдЗрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
  2. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ ( =default ) рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрд░рдХреНрд╖рд┐рдд рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВред рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдХрдХреНрд╖рд╛ рдореЗрдВ рдРрд╕реА рдШреЛрд╖рдгрд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред


3.6ред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдирд┐рд░реНрдорд╛рддрд╛


рдЕрдХреНрд╕рд░, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХрдВрдкрд╛рдЗрд▓ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ рдЦрдВрдб 1.1)ред рдпрд╣ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЦреБрд▓рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдпрджрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдбрд┐рд▓реАрдЯ ( =delete ) рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкреАрдврд╝реА рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рджрдмрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдРрд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ ( =default ) рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдирд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдВрд░рдХреНрд╖рд┐рдд рдирд┐рд░реНрдорд╛рддрд╛ рдХреА рдШреЛрд╖рдгрд╛ рд╣рдореЗрд╢рд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЦрдВрдб 4.4 рдореЗрдВ рд╣реИред



3.7ред рджреНрд╡рд┐рджрд┐рд╢ рдмрд╛рддрдЪреАрдд


рджреНрд╡рд┐рджрд┐рд╢ рд╕рдВрдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдПрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВред рдпрджрд┐ рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реИ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреБрдЫ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рднреА рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдореЙрдбреНрдпреВрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рд╕реЗрд╡рд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдбреЗрдЯрд╛ рдпрд╛ рд╕реВрдЪрдирд╛рдПрдВ рднреА рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред



3.8ред рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕


рдЪреВрдВрдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрджрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорд╛рдирдХ рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрд▓реЗрдЯрд░ (рдкреНрд░рдХрд╛рд░) рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рд▓реАрдЯ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдФрд░ рдХреЛрдб рдмрд╕ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж)ред рдорд╛рдирдХ рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ (рдХрд╕реНрдЯрдо рд░рд┐рдореВрд╡рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕рд╣рд┐рдд) [рдЬреЛрд╕рдЯрд┐рд╕], [рдореЗрдпрд░реНрд╕ 3] рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред рдХрд╕реНрдЯрдо рд░рд┐рдореВрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЦрдВрдб 4.3.1 рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


, , , .



3.9. -


- const. , , -, .



3.10. COM-


COM- , , COM тАФ , COM- , C, , . COM- C++ , COM.



3.11.


(API) (SDK). . -, -, . , (Windows DLL), : -. . , , . LoadLibrary() , -, .



4.



4.1.


, .


 class IBase { protected:    virtual ~IBase() = default; //   public:    virtual void Delete() = 0; //      IBase& operator=(const IBase&) = delete; //   }; 

.


 class IActivatable : public IBase { protected:    ~IActivatable() = default; //   public:    virtual void Activate(bool activate) = 0;    static IActivatable* CreateInstance(); // - }; 

, , . , IBase . , (. 1.3). , .



4.2.


 class Activator : private IActivatable { // ... private:    Activator(); protected:    ~Activator(); public:    void Delete() override;    void Activate(bool activate) override;    friend IActivatable* IActivatable::CreateInstance(); }; Activator::Activator() {/* ... */} Activator::~Activator() {/* ... */} void Activator::Delete() { delete this; } void Activator::Activate(bool activate) {/* ... */} IActivatable* IActivatable::CreateInstance() {    return static_cast<IActivatable*>(new Activator()); } 

, , , - , .



4.3ред



4.3.1.


. - ( IBase ):


 struct BaseDeleter {    void operator()(IBase* p) const { p->Delete(); } }; 

std::unique_ptr<> - :


 template <class I> // I тАФ  IBase using UniquePtr = std::unique_ptr<I, BaseDeleter>; 

, , - , UniquePtr .


-:


 template <class I> // I тАФ  - CreateInstance() UniquePtr<I> CreateInstance() {    return UniquePtr<I>(I::CreateInstance()); } 

:


 template <class I> // I тАФ  IBase UniquePtr<I> ToPtr(I* p) {    return UniquePtr<I>(p); } 

std::shared_ptr<> std::unique_ptr<> , , std::shared_ptr<> . Activator .


 auto un1 = CreateInstance<IActivatable>(); un1->Activate(true); auto un2 = ToPtr(IActivatable::CreateInstance()); un2->Activate(true); std::shared_ptr<IActivatable> sh = CreateInstance<IActivatable>(); sh->Activate(true); 

( тАФ -):


 std::shared_ptr<IActivatable> sh2(IActivatable::CreateInstance()); 

std::make_shared<>() , ( ).


: , . : , - . 4.4.



4.3.2.


. -. std::shared_ptr<> , , ( ). std::shared_ptr<> ( ) - , delete . std::shared_ptr<> - ( ) - . .


 #include <memory> class IActivatable; using ActPtr = std::shared_ptr<IActivatable>; //   class IActivatable { protected:    virtual ~IActivatable() = default; //      IActivatable& operator=(const IActivatable&) = default; //   public:    virtual void Activate(bool activate) = 0;    static ActPtr CreateInstance(); // - }; //   class Activator : public IActivatable { // ... public:    Activator();  //      ~Activator(); //      void Activate(bool activate) override; }; Activator::Activator() {/* ... */} Activator::~Activator() {/* ... */} void Activator::Activate(bool activate) {/* ... */} ActPtr IActivatable::CreateInstance() {    return ActPtr(new Activator()); } 

- std::make_shared<>() :


 ActPtr IActivatable::CreateInstance() {    return std::make_shared<Activator>(); } 

std::unique_ptr<> , , - , .



4.4ред


C# Java C++ ┬л┬╗, . . IBase .


 class IBase { protected:    IBase() = default;    virtual ~IBase() = 0; // ,       virtual void Delete(); //   public:    IBase(const IBase&) = delete;            //      IBase& operator=(const IBase&) = delete; //      struct Deleter        // -    {        void operator()(IBase* p) const { p->Delete(); }    };    friend struct IBase::Deleter; }; 

, Delete() , .


 IBase::~IBase() = default; void IBase::Delete() { delete this; } 

IBase . Delete() , . - IBase . Delete() , - . Delete() , . , 4.3.1.



5. ,



5.1


, , , , .


, , IException Exception .


 class IException {    friend class Exception;    virtual IException* Clone() const = 0;    virtual void Delete() = 0; protected:    virtual ~IException() = default; public:    virtual const char* What() const = 0;    virtual int Code() const = 0;    IException& operator=(const IException&) = delete; }; class Exception {    IException* const m_Ptr; public:    Exception(const char* what, int code);    Exception(const Exception& src) : m_Ptr(src.m_Ptr->Clone()) {}    ~Exception() { m_Ptr->Delete(); }    const IException* Ptr() const { return m_Ptr; } }; 

Exception , IException . , throw , . Exception , . - , .


Exception , , .


IException :


 class ExcImpl : IException {    friend class Exception;    const std::string m_What;    const int m_Code;    ExcImpl(const char* what, int code);    ExcImpl(const ExcImpl&) = default;    IException* Clone() const override;    void Delete() override; protected:    ~ExcImpl() = default; public:    const char* What() const override;    int Code() const override; }; ExcImpl::ExcImpl(const char* what, int code)    : m_What(what), m_Code(code) {} IException* ExcImpl::Clone() const { return new ExcImpl(*this); } void ExcImpl::Delete() { delete this; } const char* ExcImpl::What() const { return m_What.c_str(); } int ExcImpl::Code() const { return m_Code; } 

Exception :


 Exception::Exception(const char* what, int code)    : m_Ptr(new ExcImpl(what, code)) {} 

, тАФ .NET тАФ , тАФ , C++/CLI. , , , C++/CLI.



5.2


- :


 template <typename T> class ICollect { protected:    virtual ~ICollect() = default; public:    virtual ICollect<T>* Clone() const = 0;    virtual void Delete() = 0;    virtual bool IsEmpty() const = 0;    virtual int GetCount() const = 0;    virtual T& GetItem(int ind) = 0;    virtual const T& GetItem(int ind) const = 0;    ICollect<T>& operator=(const ICollect<T>&) = delete; }; 

, -, .


 template <typename T> class ICollect; template <typename T> class Iterator; template <typename T> class Contain {    typedef ICollect<T> CollType;    CollType* m_Coll; public:    typedef T value_type;    Contain(CollType* coll);    ~Contain(); //     Contain(const Contain& src);    Contain& operator=(const Contain& src); //     Contain(Contain&& src);    Contain& operator=(Contain&& src);    bool mpty() const;    int size() const;    T& operator[](int ind);    const T& operator[](int ind) const;    Iterator<T> begin();    Iterator<T> end(); }; 

. , . , , , , - begin() end() , . (. [Josuttis]), for . . , , .



6. -


. -, . . , ++. , .NET, Java Pyton. . , , . .NET Framework C++/CLI C++. .



7.


-, .


.


  1. delete .
  2. .
  3. .

.


, delete . , .


- , . , , delete .


.


, , , , .





[GoF]
рдЧрд╛рдорд╛ рдИред, рд╣реЗрд▓реНрдо рдЖрд░ред, рдЬреЙрдирд╕рди рдЖрд░ред, рд╡рд▓рд┐рд╕рд╛рдЗрдбреНрд╕ рдЬреЗред рдореЗрдердбреНрд╕ рдСрдлрд╝ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдбрд┐рдЬрд╝рд╛рдЗрдиред рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди ред: рдкреНрд░рддрд┐ред рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реЗ - рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ: рдкреАрдЯрд░, 2001ред


[рдЬреЛрд╕рдЯрд┐рд╕]
рдЬреЛрд╕рд╛рдЯрд┐рд╕, рдирд┐рдХреЛрд▓рд╛рдИ рдПрдоред рд╕реАред + рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп: рд╕рдВрджрд░реНрдн рдЧрд╛рдЗрдб, рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг: рдкреНрд░рддрд┐ред рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реЗ - рдПрдоред: рдПрд▓рдПрд▓рд╕реА тАЬрдЖрдИ.рдбреА. рд╡рд┐рд▓рд┐рдпрдореНрд╕, 2014ред


[рджреЗрд╣реБрд░реНрд╕реНрдд]
рджреЗрд╣реБрд░рд╕реНрдЯ, рд╕реНрдЯреАрдлрди рдХреЗред рд╕реНрд▓рд┐рдкрд░реА рд╕реНрдерд╛рди рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдХреИрд╕реЗ рдмрдЪреЗрдВ ред: рдкреНрд░рддрд┐ред рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реЗ - рдПрдо .: рдбреАрдПрдордХреЗ рдкреНрд░реЗрд╕, 2012ред


[Meyers1]
, . C++. 35 .: . . тАФ .: , 2000.


[Meyers2]
, . C++. 55 .: . . тАФ .: , 2014.


[Meyers3]
, . C++: 42 C++11 C++14.: . . тАФ .: ┬л.. ┬╗, 2016.


[Sutter]
, . C++.: . . тАФ : ┬л.. ┬╗, 2015.


[Sutter/Alexandrescu]
, . , . ++.: . . тАФ .: ┬л.. ┬╗, 2015.




Source: https://habr.com/ru/post/hi427281/


All Articles