C ++ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╢реНрд░реЗрдгрд┐рдпрд╛рдБ

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


рд▓реЗрдЦ рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА-рднрд╛рд╖рд╛ рдХреЗ рдХрд╛рдлреА рд╢рдмреНрдж рд╣реЛрдВрдЧреЗ, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд░реВрд╕реА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЕрдХреНрд╕рд░ рдЕрдВрдЧреНрд░реЗрдЬреА рд╢рдмреНрджреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдЙрдиреНрд╣реЗрдВ рдЗрдЯреИрд▓рд┐рдХ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реВрдВред

рдереЛрдбрд╝рд╛ рд╕рд╛ рдЗрддрд┐рд╣рд╛рд╕


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


lvalue = rvalue; 

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


рдмрдВрдЬрд╛рд░рди рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ


рд╕реА ++ рдореЗрдВ, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреА рд╢рдмреНрджрд╛рд╡рд▓реА рдХрд╛рдлреА рджреГрдврд╝рддрд╛ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдИ рд╣реИ, рдЦрд╛рд╕рдХрд░ рд╕реА ++ 11 рдорд╛рдирдХ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЬрд┐рд╕рдиреЗ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡рд┐рддрд╛ рд▓рд┐рдВрдХ рдФрд░ рдЪрд╛рд▓рд┐рдд рдЕрд░реНрде рд╡рд┐рдЬреНрдЮрд╛рди рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ред рдирдИ рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЗ рдЙрджреНрднрд╡ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╕реНрдЯреНрд░реИрд╕рдкреБрдк рдХреЗ рд▓реЗрдЦ "рдиреНрдпреВ" рдореВрд▓реНрдп рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред


рдирдИ, рдЕрдзрд┐рдХ рдХрдареЛрд░ рд╢рдмреНрджрд╛рд╡рд▓реА 2 рдЧреБрдгреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ:


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

рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА-рдПрдХреНрд╕рдкреНрд░реЗрд╕рд┐рдВрдЧ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЛ рдЧреНрд▓рд╡реНрдпреВ ( рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдорд╛рди ) рд╢рдмреНрдж рдХреЗ рддрд╣рдд рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдШреВрдорддреЗ рд╣реБрдП рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдХреЛ рд░рд┐рд╡реЗрд▓реНрдпреВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рджреЛ рдЧреБрдгреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдиреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА 3 рдореБрдЦреНрдп рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреА рд╣реИ:


рдПрдХ рдкрд╣рдЪрд╛рди рд╣реИрдкрд╣рдЪрд╛рди рд╕реЗ рд░рд╣рд┐рдд
рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛lvalue-
рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИXValueprvalue

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


рдЖрдзреБрдирд┐рдХ C ++ рдорд╛рдирдХ рдореЗрдВ, рд╢реНрд░реЗрдгреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдпреЛрдЬрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


рдЫрд╡рд┐


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


glvalue


Glvalue рд╢реНрд░реЗрдгреА рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реИрдВ:


  • рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдкреНрд░рдЪрд▓рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ;
  • рдмрд╣реБрд░реВрдкреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИрдВ;
  • рдкреНрд░рдХрд╛рд░ рд╢реВрдиреНрдп рдХрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ - рдпрд╣ рд╕реАрдзреЗ рдкрд╣рдЪрд╛рди рд╣реЛрдиреЗ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдХрд╛рд░ рд╢реВрдиреНрдп рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реЛ;
  • рдПрдХ рдЕрдкреВрд░реНрдг рдкреНрд░рдХрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЧреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд░реВрдк рдореЗрдВ (рдпрджрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рд╣реЛ)ред

rvalue


рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА рд╢реНрд░реЗрдгреА рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реИрдВ:


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

 class A { public: A() = default; A(const A&) { std::cout << "A::A(const A&)\n"; } A(A&&) { std::cout << "A::A(A&&)\n"; } }; ......... A a; A b(a); //  A(const A&) A c(std::move(a)); //  A(A&&) 

рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, A && рдПрдХ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡рд┐рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдирд┐рд░рдВрддрд░ рдЕрдВрддрд░рд╛рд▓ рд╕рдВрджрд░реНрдн рдФрд░ рдПрдХ рдЕрдВрддрд░рд╛рд▓ рд╕рдВрджрд░реНрдн рджреЛрдиреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреЛрдИ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдирд╣реАрдВ рд╣реИ, рдПрдХ рд░рдЪрдирд╛рдХрд╛рд░ рд╡рд┐рдХрд▓реНрдк рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рдВрджрд░реНрдн рд╕рдВрджрд░реНрдн рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред

lvalue


рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:


  • рд╕рднреА рдЪрдордХ рдЧреБрдг (рдКрдкрд░ рджреЗрдЦреЗрдВ);
  • рдЖрдк рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ (рдмрд┐рд▓реНрдЯ-рдЗрди рдпреВрдиреЗрд░реА рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ);
  • рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЕрдВрддрд░рд╛рд▓ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдпрд╛ рдХрдВрдкрд╛рдЙрдВрдб рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ;
  • рдПрдХ рдЕрдВрддрд░рд╛рд▓ (рджреЛрдиреЛрдВ рд╕реНрдерд┐рд░ рдФрд░ рдЧреИрд░-рд╕реНрдерд┐рд░) рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рд╡ рд▓рд╡рд▓реАрди рд╢реНрд░реЗрдгреА рдХреЗ рд╣реИрдВ:


  • рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЪрд░, рдХрд╛рд░реНрдп рдпрд╛ рд╡рд░реНрдЧ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдирд╛рдоред рднрд▓реЗ рд╣реА рдЪрд░ рдПрдХ рд╕рдВрджрд░реНрдн рд╣реИ, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдЗрд╕ рдЪрд░ рдХрд╛ рдирд╛рдо рдПрдХ рдЕрдВрддрд░рд╛рд▓ рд╣реИ ;

 void func() {} ......... auto* func_ptr = &func; // :     auto& func_ref = func; // :     int&& rrn = int(123); auto* pn = &rrn; // :    auto& rn = rrn; // :  lvalue- 

  • рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдПрдХ рдЕрддрд┐рднрд╛рд░рд┐рдд рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЬреЛ рдПрдХ рд▓реИрд╡рд▓реНрдпреВ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рд▓реИрд╡рд▓реНрдпреВ рд╕рдВрджрд░реНрдн рдХреЗ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐;
  • рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░, рдХрдВрдкрд╛рдЙрдВрдб рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ ( = , += , /= , рдЖрджрд┐), рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░реА-рдЗрдиреНрдХреНрд░реАрдореЗрдВрдЯ рдФрд░ рдкреНрд░реА-рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ ( ++a , --b ), рдмрд┐рд▓реНрдЯ-рдЗрди рдкреЙрдЗрдВрдЯрд░ --b рдСрдкрд░реЗрдЯрд░ ( *p );
  • рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ ( a[n] рдпрд╛ n[a] ), рдЬрдм рдСрдкрд░реЗрдВрдб рдореЗрдВ рд╕реЗ рдПрдХ рдПрдХ рд▓реИрд╡рд▓реНрдпреВ рд╕рд░рдгреА рд╣реИ;
  • рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдПрдХ рдЕрддрд┐рднрд╛рд░рд┐рдд рдмрдпрд╛рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЬреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ;
  • рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рдЬреИрд╕реЗ "Hello, world!" ред

рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ C ++ рдореЗрдВ рдЕрдиреНрдп рд╕рднреА рд╢рд╛рдмреНрджрд┐рдХ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ рдареАрдХ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд▓рд╡рд▓реНрдпреВ (рдпрджреНрдпрдкрд┐ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп) рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕рдХрд╛ рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 auto* p = &тАЭHello, world!тАЭ; //   ,    

prvalue


рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:


  • рд╕рднреА rvalue рдЧреБрдг (рдКрдкрд░ рджреЗрдЦреЗрдВ);
  • рдмрд╣реБрд░реВрдкреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛: рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рдХрд╛рд░ рд╣рдореЗрд╢рд╛ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ;
  • рдЕрдкреВрд░реНрдг рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ ( рд╢реВрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЗрд╕ рдкрд░ рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА);
  • рдПрдХ рд╕рд╛рд░ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдПрдХ рд╕рд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛ рд╕рдХрддреА рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рд╡ рдкреНрд░рдЪрд▓рд┐рдд рд╢реНрд░реЗрдгреА рдХреЗ рд╣реИрдВ:


  • рд╢рд╛рдмреНрджрд┐рдХ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЫреЛрдбрд╝рдХрд░), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 42 , true рдпрд╛ nullptr ;
  • рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдпрд╛ рдПрдХ рдЕрддрд┐рднрд╛рд░рд┐рдд рдСрдкрд░реЗрдЯрд░ рдЬреЛ рдПрдХ рдЧреИрд░-рд╕рдВрджрд░реНрдн ( str.substr(1, 2) , str1 + str2 , it++ ) рдпрд╛ рдПрдХ рдЧреИрд░-рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд░реВрдкрд╛рдВрддрд░рдг рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП static_cast<double>(x) , std::string{} , (int)42 );
  • рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреЛрд╕реНрдЯ-рдЗрдиреНрдХреНрд░реАрдореЗрдВрдЯ рдФрд░ рдкреЛрд╕реНрдЯ- b-- ( a++ , b-- ), рдмрд┐рд▓реНрдЯ-рдЗрди рдЧрдгрд┐рддреАрдп рдХрд╛рд░реНрдп ( a + b , a % b , a & b , a << b , etc.), рдмрд┐рд▓реНрдЯ-рдЗрди рд▓реЙрдЬрд┐рдХрд▓ рдСрдкрд░реЗрд╢рдВрд╕ ( a && b , a || b !a , рдЖрджрд┐), рддреБрд▓рдирд╛ рд╕рдВрдЪрд╛рд▓рди ( a < b , a == b , a >= b , рдЖрджрд┐), рдкрддреЗ ( &a ) рд▓реЗрдиреЗ рдХрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдСрдкрд░реЗрд╢рди;
  • рдпрд╣ рд╕реВрдЪрдХ;
  • рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдЖрдЗрдЯрдо;
  • рдПрдЯрд┐рдкрд┐рдХрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреИрд░рд╛рдореАрдЯрд░, рдпрджрд┐ рдпрд╣ рдПрдХ рд╡рд░реНрдЧ рдирд╣реАрдВ рд╣реИ;
  • рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП [](int x){ return x * x; } [](int x){ return x * x; } ред

XValue


рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:


  • рд╕рднреА rvalue рдЧреБрдг (рдКрдкрд░ рджреЗрдЦреЗрдВ);
  • рд╕рднреА рдЪрдордХ рдЧреБрдг (рдКрдкрд░ рджреЗрдЦреЗрдВ)ред

Xvalue рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг:


  • рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдмрд┐рд▓реНрдЯ-рдЗрди рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЬреЛ рдПрдХ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡рд┐рддрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП std :: move (x) ;

рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЙрд▓рд┐рдВрдЧ std :: move () рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП , рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдПрдбреНрд░реЗрд╕ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА, рдпрд╣ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдкреЙрд▓рд┐рдореЙрд░реНрдлрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

 struct XA { virtual void f() { std::cout << "XA::f()\n"; } }; struct XB : public XA { virtual void f() { std::cout << "XB::f()\n"; } }; XA&& xa = XB(); auto* p = &std::move(xa); //  auto& r = std::move(xa); //  std::move(xa).f(); //  тАЬXB::f()тАЭ 

  • рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ ( a[n] рдпрд╛ n[a] ) рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЬрдм рдСрдкрд░реЗрдВрдб рдореЗрдВ рд╕реЗ рдПрдХ рдПрдХ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡рд┐рддрд╛ рд╕рд░рдгреА рд╣реИред

рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ


рдХреЛрдорд╛ рд╕рдВрдЪрд╛рд▓рдХ


рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╢реНрд░реЗрдгреА рд╣рдореЗрд╢рд╛ рджреВрд╕рд░реЗ рдСрдкрд░реЗрдВрдб рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╢реНрд░реЗрдгреА рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред


 int n = 0; auto* pn = &(1, n); // lvalue auto& rn = (1, n); // lvalue 1, n = 2; // lvalue auto* pt = &(1, int(123)); // , rvalue auto& rt = (1, int(123)); // , rvalue 

рд╡реНрдпрд░реНрде рднрд╛рд╡


рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╢реВрдиреНрдп рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ, рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╢реВрдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХрдирд╛ рдкреНрд░рдЪрд▓рд┐рдд рднрд╛рд╡ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрджрд░реНрднреЛрдВ рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЯрд░реНрдирд░реА рддреБрд▓рдирд╛ рдСрдкрд░реЗрдЯрд░


рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдПрдХ рд╢реНрд░реЗрдгреА рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ a ? b : c - рдорд╛рдорд▓рд╛ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рд╣реИ, рдпрд╣ рд╕рднреА рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рддрд░реНрдХ ( b рдФрд░ c ) рдХреА рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:


  • рдпрджрд┐ b рдпрд╛ c рдЯрд╛рдЗрдк рд╢реВрдиреНрдп рд╣реИрдВ , рддреЛ рдкреВрд░реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рд╢реНрд░реЗрдгреА рдФрд░ рдкреНрд░рдХрд╛рд░ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреА рд╢реНрд░реЗрдгреА рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред рдпрджрд┐ рджреЛрдиреЛрдВ рддрд░реНрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╢реВрдиреНрдп рд╣реИрдВ , рддреЛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдХрд╛рд░ рд╢реВрдиреНрдп рдХрд╛ рдкреНрд░рдЪрд▓рди рд╣реИ ;
  • рдпрджрд┐ b рдФрд░ c рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреНрд▓рд╡реНрдпреВ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЧреНрд▓рд╡реНрдпреВ рд╣реИ ;
  • рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдЪрд▓рд┐рдд рд╣реИред

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


 int n = 1; int v = (1 > 2) ? throw 1 : n; // lvalue, .. throw   void,    n ((1 < 2) ? n : v) = 2; //  lvalue,  ,   ((1 < 2) ? n : int(123)) = 2; //   , ..    prvalue 

рдЦреЗрддреЛрдВ рдФрд░ рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн


рдкреНрд░рдкрддреНрд░ am рдФрд░ p->m рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП (рдпрд╣рд╛рдВ рд╣рдо рдмрд┐рд▓реНрдЯ-рдЗрди рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ -> ), рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдо рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ:


  • рдпрджрд┐ m рдПрдХ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдПрд▓рд┐рдореЗрдВрдЯ рдпрд╛ рдиреЙрди-рд╕реНрдЯреИрдЯрд┐рдХ рдХреНрд▓рд╛рд╕ рдореЗрдердб рд╣реИ, рддреЛ рдкреВрд░реЗ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЛ рдкреНрд░рдЪрд▓рди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рд▓рд┐рдВрдХ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд╕реЗ рдЬреЛрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ);
  • рдпрджрд┐ рдХреЛрдИ рдЕрд╡рд▓рдВрдмрди рд╣реИ рдФрд░ m рдПрдХ рдЧреИрд░-рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЧреИрд░-рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░ рд╣реИ, рддреЛ рд╕рдВрдкреВрд░реНрдг рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ xvalative рд╢реНрд░реЗрдгреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ;
  • рдЕрдиреНрдпрдерд╛ рдпрд╣ рдПрдХ рдЕрдВрддрд░рд╛рд▓ рд╣реИ ред

рдХрдХреНрд╖рд╛ рд╕рджрд╕реНрдпреЛрдВ ( a.*mp рдФрд░ p->*mp ) рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдо рд╕рдорд╛рди рд╣реИрдВ:


  • рдпрджрд┐ mp рдПрдХ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИ, рддреЛ рд╕рдВрдкреВрд░реНрдг рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкреНрд░рдЪрд▓рди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ ;
  • рдпрджрд┐ рдХреЛрдИ рд░рд╡реНрдпреВ рд╣реИ , рдФрд░ mp рдПрдХ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИ, рддреЛ рдкреВрд░реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ xvalue рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ ;
  • рдЕрдиреНрдпрдерд╛ рдпрд╣ рдПрдХ рдЕрдВрддрд░рд╛рд▓ рд╣реИ ред

рдмрд┐рдЯ рдХреНрд╖реЗрддреНрд░


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


рдмрд┐рдЯ-рдлрд╝реАрд▓реНрдб [class.bit]
рдпрджрд┐ рдкреНрд░рдХрд╛рд░ const T & рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░ рдПрдХ рд▓реИрд╡рд▓реНрдпреВ рд╣реИ рдЬреЛ рдмрд┐рдЯ-рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдВрджрд░реНрдн рдмрд┐рдЯ-рдлрд╝реАрд▓реНрдб рдХрд╛ рдорд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реНрдб рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИ; рд╕рдВрджрд░реНрдн рд╕реАрдзреЗ рдмрд┐рдЯ-рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рд╣реИред

 struct BF { int f:3; }; BF b; bf = 1; // OK auto* pb = &b.f; //  auto& rb = bf; //  

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


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

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


All Articles