C ++ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдкрд╣рд▓реВ


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




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


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

рдкрд░рд┐рдЪрдп
1. рдкреНрд░рдХрд╛рд░
1.1ред рд╕рд╢рд░реНрдд рдирд┐рд░реНрджреЗрд╢ рдФрд░ рдСрдкрд░реЗрдЯрд░
1.2ред рд╕рдореНрдпрдХ рд░реВрдкрд╛рдВрддрд░рдг
2. рдирд╛рдо рдХрд╛ рд╕рдВрдХрд▓реНрдк
2.1ред рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреЛрдкреНрд╕ рдореЗрдВ рдЪрд░ рдХреЛ рдЫрд┐рдкрд╛рддреЗ рд╣реБрдП
2.2ред рдХрд╛рд░реНрдп рдЕрдзрд┐рднрд╛рд░
3. рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕, рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕, рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди, рдбрд┐рд▓реАрд╢рди
3.1ред рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрдХреНрд╖рд╛ рд╕рджрд╕реНрдп рдХрд╛рд░реНрдп
3.2ред Uninitialized рдЪрд░
3.3ред рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдФрд░ рдиреЙрди-рд╕реНрдЯреЗрдЯрд┐рдХ рдХреНрд▓рд╛рд╕ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛
3.4ред рд╕реНрдЯреИрдЯрд┐рдХ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛
3.5ред рдирд╛рд╢рд╡рд╛рдиреЛрдВ рдореЗрдВ рдЕрдкрд╡рд╛рдж
3.6ред рдЧрддрд┐рд╢реАрд▓ рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛
3.7ред рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдЕрдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ рд╣рдЯрд╛рдирд╛
4. рд╕рдВрдЪрд╛рд▓рдХ, рднрд╛рд╡
4.1ред рд╕рдВрдЪрд╛рд▓рдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛
4.2ред рд╕рдВрдЪрд╛рд▓рдХ рдЕрдзрд┐рднрд╛рд░
4.3ред рд╕рдмрдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛
5. рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдп
рел.рез рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕
5.2 рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
5.3 рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдФрд░ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛
5.4 рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд┐рдзреНрд╡рдВрд╕рдХ
6. рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рд╕реАрдзрд╛ рдХрд╛рдо
6.1 рдмрдлрд░ рдУрд╡рд░рдлреНрд▓реЛ рдХрд░рдирд╛
6.2 рдЬреЗрдб-рд╕рдорд╛рдкреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕
6.3 рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдПрдХ рдЪрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп
7. рд╕рд┐рдВрдЯреЗрдХреНрд╕
7.1 рдЬрдЯрд┐рд▓ рдШреЛрд╖рдгрд╛рдПрдБ
7.2 рд╕рд┐рдВрдЯреЗрдХреНрд╕ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛
8. рд╡рд┐рд╡рд┐рдз
8.1 рдХреАрд╡рд░реНрдб рдЗрдирд▓рд╛рдЗрди рдФрд░ ODR
8.2 рд╣реИрдбрд░ рдлрд╛рдЗрд▓реЗрдВ
8.3 рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ
8.4 рдорд╛рди рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░
8.5 рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрди
8.6 рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдФрд░ рдЧреИрд░-рдкрд╛рд╕рд┐рдВрдЧ рд▓рд┐рдВрдХ
8.7 рдмрд╛рдЗрдирд░реА рд╕рдВрдЧрддрддрд╛
8.8 рдореИрдХреНрд░реЛрдВ
9. рд╕рд╛рд░рд╛рдВрд╢
рд╕рдВрджрд░реНрдн



рдкреНрд░рдореЛрдирд┐рдЯрд╕, рдкреНрд░рд╛рдореБрдиреАрдЯрд╕ред
рдкреВрд░реНрд╡рд╛рднрд╛рд╕ рдХрд╛ рдЕрд░реНрде рд╣реИ рд╕рд╢рд╕реНрддреНрд░ред (рдЕрдХреНрд╖рд╛рдВред)



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


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



1. рдкреНрд░рдХрд╛рд░



1.1ред рд╕рд╢рд░реНрдд рдирд┐рд░реНрджреЗрд╢ рдФрд░ рдСрдкрд░реЗрдЯрд░


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


if(a=b) рдЬрдм рд╕рд╣реА рдврдВрдЧ рд╕реЗ if(a==b) ,
if(a<x<b) , рдЬрдм рд╕рд╣реА рдврдВрдЧ рд╕реЗ if(a<x && x<b) ,
if(a&x==0) , рдЬрдм рд╕рд╣реА рдврдВрдЧ рд╕реЗ if((a&x)==0) ,
if(Foo) рд╕рд╣реА рдврдВрдЧ рд╕реЗ if(Foo()) ,
if(arr) рд╕рд╣реА рдврдВрдЧ рд╕реЗ if(arr[0]) ,
if(strcmp(s,r)) рдЬрдм рд╕рд╣реА рд╣реЛ if(strcmp(s,r)==0) ред


рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдПрдХ рд╕рдВрдХрд▓рдХ рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВред рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рднреА рдХрднреА-рдХрднреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред C # рдореЗрдВ, рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИрдВ, if(...) рдФрд░ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ bool рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдк рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ bool рдФрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдХреИрд╕реЗ рд▓рдбрд╝реЗрдВ:


  • рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдоред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рд╣рдореЗрд╢рд╛ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреЗрддреА рд╣реИрдВред
  • рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  • рдкреБрд░рд╛рдиреЗ рдЬрдорд╛рдиреЗ рдХреА рд░рд┐рд╕реЗрдкреНрд╢рди рддрдХрдиреАрдХ: рдЬрдм рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрд╛рдИрдВ рдУрд░ рд░рдЦреЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП if(MAX_PATH==x) ред рдпрд╣ рд╕реБрдВрджрд░ рдХреЛрдВрдбреЛ рджрд┐рдЦрддрд╛ рд╣реИ (рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ рдирд╛рдо рднреА рд╣реИ - "рдпреЛрджрд╛ рд╕рдВрдХреЗрддрди"), рдФрд░ рдорд╛рдирд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдорд▓реЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
  • рдпрдерд╛рд╕рдВрднрд╡ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ const рдХреНрд╡рд╛рд▓рд┐рдлрд╛рдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдлрд┐рд░, рдпрд╣ рд╣рдореЗрд╢рд╛ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
  • рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕рд╣реА рддрд╛рд░реНрдХрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ: if(x!=0) рдмрдЬрд╛рдп if(x) ред (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдпрд╣рд╛рдВ рдСрдкрд░реЗрдЯрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рдЬрд╛рд▓ рдореЗрдВ рдкрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рддреАрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред)
  • рдЕрддреНрдпрдВрдд рдЪреМрдХрд╕ рд░рд╣реЛред


1.2ред рд╕рдореНрдпрдХ рд░реВрдкрд╛рдВрддрд░рдг


C ++ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЗ рдирд┐рд╣рд┐рддрд╛рд░реНрде рд░реВрдкрд╛рдВрддрд░рдг рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВред


рд╕рдмрд╕реЗ рдХрд╖реНрдЯрдкреНрд░рдж рдирд┐рд╣рд┐рддрд╛рд░реНрде рд░реВрдкрд╛рдВрддрд░рдг рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рдпрд╛ рд╕реВрдЪрдХ рд╕реЗ bool рдФрд░ bool рд╕реЗ int рддрдХ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рд╣реИрдВред рдпрд╣ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ (рд╕реА рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ) рд╣реИ рдЬреЛ рдзрд╛рд░рд╛ 1.1 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВред рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдкрд╛рдВрддрд░рдг рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ (рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рдХрдо рдХрд░рдиреЗ) рдХреА рд╕рдЯреАрдХрддрд╛ рдореЗрдВ рдХрдореА рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, double рд╕реЗ int рд╣рдореЗрд╢рд╛ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдЬрдм рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рдХреА рд╕рдЯреАрдХрддрд╛ рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдПрдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред C # рдореЗрдВ, рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рдФрд░ bool рдмреАрдЪ рд░реВрдкрд╛рдВрддрд░рдг рдирд┐рд╖рд┐рджреНрдз рд╣реИ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрдкрд╖реНрдЯ), рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдХреЗ рдиреБрдХрд╕рд╛рди рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВ, рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИред


рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЕрдиреНрдп рдирд┐рд╣рд┐рдд рд░реВрдкрд╛рдВрддрд░рдг рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ: (1) explicit рдХреАрд╡рд░реНрдб рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛; (2) рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдСрдкрд░реЗрдЯрд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ред рдпреЗ рдкрд░рд┐рд╡рд░реНрддрди рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдЕрдВрддрд░рд╛рд▓ рдХреЛ рддреЛрдбрд╝рддреЗ рд╣реИрдВред


C # рдореЗрдВ, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рдХрдо рд╣реИ, implicit рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╕реНрдЯрдо рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдХреИрд╕реЗ рд▓рдбрд╝реЗрдВ:


  • рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдоред
  • рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдбрд┐рдЬрд╛рдЗрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ, рдЕрддреНрдпрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред


2. рдирд╛рдо рдХрд╛ рд╕рдВрдХрд▓реНрдк



2.1ред рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреЛрдкреНрд╕ рдореЗрдВ рдЪрд░ рдХреЛ рдЫрд┐рдкрд╛рддреЗ рд╣реБрдП


C ++ рдореЗрдВ, рдирд┐рдореНрди рдирд┐рдпрдо рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдЪрд▓реЛ


 //   {    int x;    // ... //  ,       {        int x;        // ...    } } 

рд╕реА ++ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореЗрдВ рдШреЛрд╖рд┐рдд рдЪрд░ рдореЗрдВ рдШреЛрд╖рд┐рдд рдЪрд░ рдЫреБрдкрд╛рддрд╛ рд╣реИ рдкрд╣рд▓реЗ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди x рдмреНрд▓реЙрдХ рдореЗрдВ рд╣реЛрдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ: рдпрд╣ рдПрдХ рдХреНрд▓рд╛рд╕ рдпрд╛ рдЧреНрд▓реЛрдмрд▓ рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рд╕рджрд╕реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕рд┐рд░реНрдл рдмреНрд▓реЙрдХ рдореЗрдВ рджрд┐рдЦрдирд╛ рд╣реЛрдЧрд╛


рдЕрдм рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬрдм рдЖрдкрдХреЛ рдирд┐рдореНрди рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛ рд╣реЛрдЧрд╛


 //   {    int x;    // ... //  ,       {    // -         } } 

рдЧрд▓рддреА рд╕реЗ, рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:


 //   {    //  , :    int x;    // -         // ...    //  :    // -      } 

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


рдХреИрд╕реЗ рд▓рдбрд╝реЗрдВ:


  • рд╕рдВрднрд╡ рд╕рдмрд╕реЗ рдХрдо рджрд╛рдпрд░реЗ рдореЗрдВ рдЪрд░реЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВред
  • рд▓рдВрдмреЗ рдФрд░ рдЧрд╣рд░реЗ рдиреЗрд╕реНрдЯреЗрдб рдмреНрд▓реЙрдХ рди рд▓рд┐рдЦреЗрдВред
  • рдЕрд▓рдЧ-рдЕрд▓рдЧ рджрд╛рдпрд░реЗ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдбрд┐рдВрдЧ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  • рдЕрддреНрдпрдВрдд рдЪреМрдХрд╕ рд░рд╣реЛред


2.2ред рдХрд╛рд░реНрдп рдЕрдзрд┐рднрд╛рд░


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


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


рдиреЗрд╕реНрдЯ рджреГрд╢реНрдпрддрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдЕрдзрд┐рднрд╛рд░ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдореНрдореАрджрд╡рд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рджреНрд╡рд╛рд░рд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рдпрджрд┐ рд╕рдВрдХрд▓рдХ рдХреЛ рдореМрдЬреВрджрд╛ рджрд╛рдпрд░реЗ рдореЗрдВ рдХреЛрдИ рдЙрдореНрдореАрджрд╡рд╛рд░ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ рдЖрдЧреЗ рдХреА рдЦреЛрдЬ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИред рдпрджрд┐ рдкрд╛рдП рдЧрдП рдЙрдореНрдореАрджрд╡рд╛рд░ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА, рд╣рдЯрд╛рдП рдЧрдП рдпрд╛ рдЕрдкреНрд░рд╛рдкреНрдп рд╣реИрдВ, рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЧреЗ рдХреА рдЦреЛрдЬ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдХреЗрд╡рд▓ рдЕрдЧрд░ рд╡рд░реНрддрдорд╛рди рджрд╛рдпрд░реЗ рдореЗрдВ рдХреЛрдИ рдЙрдореНрдореАрджрд╡рд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЦреЛрдЬ рдЕрдЧрд▓реЗ, рд╡реНрдпрд╛рдкрдХ рджрд╛рдпрд░реЗ рдореЗрдВ рдЬрд╛рддреА рд╣реИред рдирд╛рдо рдЫрд┐рдкрд╛рдиреЗ рдХрд╛ рддрдВрддреНрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдзрд╛рд░рд╛ 2.1 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреЗ рд╕рдорд╛рди рд╣реИ, рджреЗрдЦреЗрдВ [рджреЗрд╡рд░рд╕рд╕реНрдЯ]ред


рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рднрдбрд╝рдХрд╛рдирд╛ред


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


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


C # рдлрд╝рдВрдХреНрд╢рди рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдУрд╡рд░рд▓реЛрдб рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдирд┐рдпрдо рдереЛрдбрд╝реЗ рдЕрд▓рдЧ рд╣реИрдВред


рдХреИрд╕реЗ рд▓рдбрд╝реЗрдВ:


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


3. рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕, рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕, рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди, рдбрд┐рд▓реАрд╢рди



3.1ред рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрдХреНрд╖рд╛ рд╕рджрд╕реНрдп рдХрд╛рд░реНрдп


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


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


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


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


C # рдореЗрдВ, рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдбрд┐рдлреЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЬрдирд░реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред


рдХреИрд╕реЗ рд▓рдбрд╝реЗрдВ:


  • рд╕рдВрдХрд▓рдХ рд╡рд┐рд╢реЗрд╖ рд╕рджрд╕реНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд░рдЦреЗрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдпрд╛ рдирд┐рд╖рд┐рджреНрдз рдХрд░реЗрдВред


3.2ред Uninitialized рдЪрд░


рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдФрд░ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЛ C ++ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рдкреНрд░рдореБрдЦ рддрддреНрд╡ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╣рдЯрд╛рддреЗ рд╕рдордп, рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕реА рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдиреЗ рдХреБрдЫ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рддреБрдЪреНрдЫ рдкреНрд░рдХрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдФрд░ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рдХреЙрд▓ рдХреЗ рдмрд┐рдирд╛, рдЪрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ sichny рдкреНрд░рдХрд╛рд░ рдФрд░ syshny рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред C рдХреЛрдб, рдпрджрд┐ C ++ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕реА рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░, рд╕рдВрдХреЗрдд, рдЧрдгрдирд╛, рд╕рд╛рде рд╣реА рд╡рд░реНрдЧ, рд╕рдВрд░рдЪрдирд╛рдПрдВ, рд╕рдВрдШ рдФрд░ рд╕рд░рдгрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рддреБрдЪреНрдЫ рдкреНрд░рдХрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢рд░реНрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рдХрд╕реНрдЯрдо рдирд┐рд░реНрдорд╛рддрд╛, рд╡рд┐рдзреНрд╡рдВрд╕рдХ, рдкреНрд░рддрд┐рд▓рд┐рдкрд┐, рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ред рдПрдХ рддреБрдЪреНрдЫ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП, рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдФрд░ рдПрдХ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдорд╛рддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╢реВрдиреНрдп рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрднреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдЗрд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рддреБрдЪреНрдЫ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЪрд░ рдЕрдиреИрддрд┐рдХ рд░реВрдк рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рд╕рд┐рдВрдЯреИрдХреНрд╕, рд╡реЗрд░рд┐рдПрдмрд▓ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рд╕рдВрджрд░реНрдн рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдШреЛрд╖рд┐рдд рд╣реЛрдиреЗ рдкрд░ рд╕реНрдереИрддрд┐рдХ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдЖрд░рдВрдн рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП, рддрддреНрдХрд╛рд▓ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдФрд░ рдЧреИрд░-рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрд░рдВрднреАрдХрд░рдг рд╕реВрдЪреА рдореЗрдВ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред (C ++ 11 рдЖрдкрдХреЛ рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп рдЧреИрд░-рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдмрд╛рдж рдореЗрдВ рджреЗрдЦреЗрдВред) рдбрд╛рдпрдирд╛рдорд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕рдкреНрд░реЗрд╢рди new T() рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддреБрдЪреНрдЫ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП new T рдПрдХ рдЕрдирд┐рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИред рдПрдХ рддреБрдЪреНрдЫ рдкреНрд░рдХрд╛рд░, new T[N] рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд╕рд░рдгреА рдмрдирд╛рддреЗ рд╕рдордп, рдЗрд╕рдХреЗ рддрддреНрд╡ рд╣рдореЗрд╢рд╛ рдЕрд╕рд┐рдВрдЪрд┐рдд рд░рд╣реЗрдВрдЧреЗред рдпрджрд┐ std::vector<T> рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рддрддреНрд╡реЛрдВ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдЖрд░рдВрдн рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рддреА рд╣реИред C ++ 11 рдПрдХ рдирдпрд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ - рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред рдХреЛрд╖реНрдардХ рдХреА рдПрдХ рдЦрд╛рд▓реА рдЬреЛрдбрд╝реА рдХрд╛ рдЕрд░реНрде рд╣реИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЗрд╕ рддрд░рд╣ рдХреА рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╣рд░ рдЬрдЧрд╣ рдЬрд╣рд╛рдБ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣ рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп рдХрдХреНрд╖рд╛ рдХреЗ рдЧреИрд░-рд╕реНрдереИрддрд┐рдХ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛, рдЬреЛ рдХрд┐ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд▓рд┐рд╕реНрдЯ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред


рдПрдХ uninitialized рдЪрд░ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕рдВрд░рдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдпрджрд┐ рдЗрд╕реЗ namespace (рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ) рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ рд╕рднреА рдмрд┐рдЯреНрд╕ рд╢реВрдиреНрдп рд╣реЛрдВрдЧреЗ, рдпрджрд┐ рдпрд╣ рд╕реНрдерд╛рдиреАрдп рдпрд╛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд┐рдЯреНрд╕ рдХрд╛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИред


рд╕рдЪ рд╣реИ, рдкреНрд░рдЧрддрд┐ рдЕрднреА рднреА рдЦрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдзреБрдирд┐рдХ рд╕рдВрдХрд▓рдХ, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЕрд╕рд┐рдВрдЪрд┐рдд рдЪрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддреЗ рд╣реИрдВред Uninitialized рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдмреЗрд╣рддрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВред


C ++ 11 рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреБрдг (рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ <type_traits> ) рдирд╛рдордХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░рдХрд╛рд░ рддреБрдЪреНрдЫ рд╣реИред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ std::is_trivial<>::value true рдпрджрд┐ T рддреБрдЪреНрдЫ рдкреНрд░рдХрд╛рд░ рд╣реИ рдФрд░ false рд╣реИред


Sysylic рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЕрдХреНрд╕рд░ рдкреНрд▓реЗрди рдУрд▓реНрдб рдбреЗрдЯрд╛ (POD) рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ POD рдФрд░ "рддреБрдЪреНрдЫ рдкреНрд░рдХрд╛рд░" рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╢рдмреНрдж рд╣реИрдВред


C # рдореЗрдВ, uninitialized рдЪрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВ; рдЗрд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╕реНрдкрд╖реНрдЯ рдЖрд░рдВрднреАрдХрд░рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рдпрд╛ рддреЛ рд╕рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рд╕рднреА рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдХреИрд╕реЗ рд▓рдбрд╝реЗрдВ:


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


3.3ред рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдФрд░ рдиреЙрди-рд╕реНрдЯреЗрдЯрд┐рдХ рдХреНрд▓рд╛рд╕ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛


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


C # рдореЗрдВ, рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкрд╣рд▓реЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмреЗрд╕ рд╕рдмреЛрдмрд┐рдЬ рд╕реЗ рд▓реЗрдХрд░ рдЖрдЦрд┐рд░реА рд╡реНрдпреБрддреНрдкрдиреНрди рддрдХ, рдлрд┐рд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЛ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред


рдХреИрд╕реЗ рд▓рдбрд╝реЗрдВ:


  • рдШреЛрд╖рдгрд╛ рдХреНрд░рдо рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдЖрд░рдВрднреАрдХрд░рдг рд╕реВрдЪреА рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдВред
  • рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдЖрд░рдВрдн рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
  • рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп рдЧреИрд░-рд╕реНрдереИрддрд┐рдХ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдЖрд░рдВрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


3.4ред рд╕реНрдЯреИрдЯрд┐рдХ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛


рд╕реНрдереИрддрд┐рдХ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ, рд╕рд╛рде рд╣реА рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдХрд▓рдиреЛрдВ рдЗрдХрд╛рдЗрдпреЛрдВ (рдлрд╛рдЗрд▓реЛрдВ) рдореЗрдВ рд╕реНрдХреЛрдк namespace (рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ) рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреНрд░рдо рдореЗрдВ рдЖрд░рдВрднрд┐рдХ рд╣реИрдВред рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдРрд╕реЗ рдЪрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд▓рд┐рдВрдХ рдПрдХ рдЕрд╕рд┐рдВрдЪрд┐рдд рдЪрд░ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдХреИрд╕реЗ рд▓рдбрд╝реЗрдВ:


  • рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдЙрдкрд╛рдп рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд┐рд░ рдЪрд░ (рд╕рд┐рдВрдЧрд▓рдЯрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд╡реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд░рдВрднреАрдХреГрдд рд╣реЛрддреЗ рд╣реИрдВред


3.5ред рдирд╛рд╢рд╡рд╛рдиреЛрдВ рдореЗрдВ рдЕрдкрд╡рд╛рдж


рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдкреНрддрд┐ред


рдХреИрд╕реЗ рд▓рдбрд╝реЗрдВ:


  • рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдиреЗ рд╕реЗ рдмрдЪреЗрдВред


3.6ред рдЧрддрд┐рд╢реАрд▓ рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛


рдпрджрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ T рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ T


 T* pt = new T(/* ... */); 

рдлрд┐рд░ рдЗрд╕реЗ рд╣рдЯрд╛рдП рдЧрдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ


 delete pt; 

рдпрджрд┐ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд╕рд░рдгреА рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ


 T* pt = new T[N]; 

рддрдм рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ delete[] рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде


 delete[] pt; 

рдпрджрд┐ рдЖрдк рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡, рджреБрд░реНрдШрдЯрдирд╛, рдЖрджрд┐ред рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ [Meyers1]ред


рдХреИрд╕реЗ рд▓рдбрд╝реЗрдВ:


  • рд╕рд╣реА delete рдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


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


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


 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()рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИ new, рддреЛ рдХреЙрд▓ Foo()рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдХрдореА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


, -. , . , , , , . [Meyers2].


:


  • .
  • .
  • .


4. ,



4.1ред


++ , . . . , 1.1.


рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:


 std::out<<c?x:y; 


 (std::out<<c)?x:y; 


 std::out<<(c?x:y); 

, , .


. << ?: std::out void* . ++ , . -, , . ?: . , ( ).


: x&f==0 x&(f==0) , (x&f)==0 , , , . - , , , , .


. / . / , /, . , x/4+1 x>>2+1 , x>>(2+1) , (x>>2)+1 , .


C# , C++, , - .


:


  • , . , , .


4.2ред


++ , . . , , . 4.1. тАФ + += . . , : , (), && , || ред , (-), (short-circuit evaluation semantics), , . & ( ). & , .. .


, - (-) , . .


- , , . . [Dewhurst].


C# , , , .


:


  • .
  • .


4.3.


++ , . ( : , (), && , || , ?: .) , , , . :


 int x=0; int y=(++x*2)+(++x*3); 

y .


, . .

 class X; class Y; void Foo(std::shared_ptr<X>, std::shared_ptr<Y>); 

Foo() :


 Foo(std::shared_ptr<X>(new X()), std::shared_ptr<Y>(new Y())); 

: X , Y , std::shared_ptr<X> , std::shared_ptr<Y> . Y , X .


:


 auto p1 = std::shared_ptr<X>(new X()); auto p2 = std::shared_ptr<Y>(new Y()); Foo(p1, p2); 

std::make_shared<Y> ( , ):


 Foo(std::make_shared<X>(), std::make_shared<Y>()); 

. [Meyers2].


:


  • .


5.



5.1ред


++98 , ( ), , ( , ). virtual , , . ( ), , , . , , . , ++11 override , , , . .


:


  • override .
  • . , .


5.2ред


. , , . . . [Dewhurst].


:


  • .


5.3ред


, , . , , post_construct pre_destroy. , тАФ . . , : ( ) . (, , .) , ( ), ( ). . [Dewhurst]. , , .


тАФ - .


, C# , , , . C# : , , . , ( , ).


:


  • , , .


5.4ред


, , delete . , - .


:


  • .


6.


тАФ C/C++, . . . ┬л ┬╗.


C# unsafe mode, .



6.1.


/++ , : strcpy() , strcat() , sprinf() , etc. ( std::vector<> , etc.) , . (, , , . . Checked Iterators MSDN.) , : , , ; , .


C#, unsafe mode, .


:


  • , .
  • .
  • z-terminated , _s (. ).


6.2. Z-terminated


, . , :


 strncpy(dst,src,n); 

strlen(src)>=n , dst (, ). , , . . тАФ . if(*str) , if(strlen(str)>0) , . [Spolsky].


C# string .


:


  • .
  • z-terminated , _s (. ).


6.3.


... . printf - , C. , , , , . , .


C# printf , .


:


  • . , printf - /.
  • .


7.



7.1.


++ , , , . рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:


 const int N = 4, M = 6; int x,                // 1    *px,              // 2    ax[N],            // 3    *apx[N],          // 4    F(char),          // 5    *G(char),          // 6    (*pF)(char),      // 7    (*apF[N])(char),  // 8    (*pax)[N],        // 9    (*apax[M])[N],    // 10    (*H(char))(long);  // 11 

:


  1. int ;
  2. int ;
  3. N int ;
  4. N int ;
  5. , char int ;
  6. , char int ;
  7. , char int ;
  8. N , char int ;
  9. N int ;
  10. M N int ;
  11. , char , long int .

, . ( .)


* & . ( .)


typedef ( using -). , :


 typedef int(*P)(long); PH(char); 

, .


C# , .


:


  • .


7.2.


.


 class X { public:    X(int val = 0); // ... }; 


 X x(5); 

x X , 5.


 X x(); 

x , X , x X , . X , , :


 X x; X x = X(); X x{};    //   C++11 

, , , . [Sutter].


, , C++ ( ). . ( C++ .)


, , , , .


C# , , .


:


  • .


8.



8.1. inline ODR


, inline тАФ . , . inline (One Defenition Rule, ODR). . , . , ODR. static : , , . static inline . , , ODR, . , . - , -. .


:


  • ┬л┬╗ inline . namespace . , .
  • тАФ namespace .


8.2.


. . , , , , .


:


  • , .
  • , : () , -.
  • using -: using namespace , using -.
  • .


8.3. switch


тАФ break case . ( .) C# .


:


  • .


8.4.


++ , тАФ , тАФ . ( class struct ) , . ( , # Java.) тАФ , .


  1. , . ( std::string , std::vector , etc.), , .
  2. , , .
  3. , (slicing), , .

, , , . . , , . , . . тАФ ( =delete ), тАФ explicit .


C# , .


:


  • , .
  • .


8.5. рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрди


++ . , . - ( ), ++11 , , , .


C++ .


C# , . , . (using-) Basic Dispose.


:


  • - .


8.6.


┬л┬╗ . , , C++ , STL- - .


. . , . . ┬л┬╗, . COM- . (, .) , C++ . тАФ . . . , (┬л┬╗ ) , . .


# , . тАФ .


:


  • .
  • .


8.7.


C++ , : , , . ( !) . , . , . , , . (, .)


C ( ), C++ C ( extern "C" ). C/C++ .


-. #pragma - , , .


, , , .


, , COM. COM-, , ( , ). COM , , .


C# . , тАФ , C#, C# C/C++.


:


  • .


8.8.


, . , . C++ . рдХреЗ рдмрджрд▓реЗ


 #define XXL 32 


 const int XXL=32; 

. inline .


# ( ).


:


  • .


9.


  1. . . . , .
  2. .
  3. . ++ тАФ ++11/14/17.
  4. - , - .
  5. .


рд╕рдВрджрд░реНрдн


[Dewhurst]
, . C++. .: . . тАФ .: , 2012.


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


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


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


[Spolsky]
, . .: . . тАФ .: -, 2008.




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


All Articles