C ++ рдореЗрдВ Google рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдбред рднрд╛рдЧ резреж

рднрд╛рдЧ 1. рдкрд░рд┐рдЪрдп
...
рднрд╛рдЧ 9. рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ
рднрд╛рдЧ 10. рдкреНрд░рд╛рд░реВрдкрдг
...


рдпрд╣ рдЖрд▓реЗрдЦ Google рд╢реИрд▓реА рдЧрд╛рдЗрдб рдХреЗ рднрд╛рдЧ рдХрд╛ C ++ рдореЗрдВ рд░реВрд╕реА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рд╣реИред
рдореВрд▓ рд▓реЗрдЦ (рдЬреАрдереБрдм рдкрд░ рдХрд╛рдВрдЯрд╛), рдЕрджреНрдпрддрди рдЕрдиреБрд╡рд╛рдж ред

рдХрд╛ рдкреНрд░рд╛рд░реВрдкрдг


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

рд░реЗрдЦрд╛ рд▓рдВрдмрд╛рдИ


рдХреЛрдб рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ 80 рд╡рд░реНрдгреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИред
рдпрд╣ рдирд┐рдпрдо рдереЛрдбрд╝рд╛ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореМрдЬреВрджрд╛ рдХреЛрдб рдХрд╛ рдереЛрдХ рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рднреА рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдирд┐рдпрдо

рдХреЗ
рдкрд╛рд▓рди тАЛтАЛрдХреЗ рд▓рд┐рдП, рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд▓рдВрдмреА рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдердХрд╛рдК рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдЫ рд╕реНрдерд╛рди рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдХреЛрдб рд╡рд╛рд▓реА рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдФрд░ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреА рдЪреМрдбрд╝рд╛рдИ рдирд╣реАрдВ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реА рд╕рдордп, 80 рдЕрдХреНрд╖рд░ рдХреА рдЪреМрдбрд╝рд╛рдИ рдПрдХ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдорд╛рдирдХ, рдЗрд╕реЗ рдХреНрдпреЛрдВ рдмрджрд▓реЗрдВ? .. рд╣реИ

рдХреЗ рдЦрд┐рд▓рд╛рдл

рджреВрд╕рд░реЗ рдкрдХреНрд╖ рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рд▓рдВрдмреА рд▓рд╛рдЗрдиреЛрдВ рдХреЛрдб рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред 80 рдЕрдХреНрд╖рд░ 1960 рдХреЗ рджрд╢рдХ рдХреЗ рдореЗрдирдлреНрд░реЗрдо рдХрд╛ рдЕрд╡рд╢реЗрд╖ рд╣реИред рдЖрдзреБрдирд┐рдХ рд╕реНрдХреНрд░реАрди рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рдВрдмреА рд▓рд╛рдЗрдиреЗрдВ рджрд┐рдЦрд╛ рд╕рдХрддреА рд╣реИрдВред 80 рд╡рд░реНрдгреЛрдВ рдХрд╛

рдПрдХ рдирд┐рд░реНрдгрдп

рдЕрдзрд┐рдХрддрдо рд╣реЛрддрд╛ рд╣реИред

рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ 80 рдЕрдХреНрд╖рд░реЛрдВ рдХреА рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИ рдпрджрд┐:

  • . , URL-, 80 .
  • /, 80 . , .
  • include.
  • using

-ASCII


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

рд╣реЗрдХреНрд╕ рднреА рдорд╛рдиреНрдп рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдпрд╣ рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "\ xEF \ xBB \ xBF" рдпрд╛ u8 "\ uFEFF"- рдпреВрдирд┐рдХреЛрдб рдореЗрдВ рд╢реВрдиреНрдп рд▓рдВрдмрд╛рдИ рдХрд╛ рдПрдХ рдЕрдЯреВрдЯ рд╕реНрдерд╛рди, рдФрд░ рдЬрд┐рд╕реЗ рд╕рд╣реА UTF-8 рдкрд╛рда рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред U8

рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рддрд╛рдХрд┐ \ uXXXX рдЬреИрд╕реЗ рд╢рд╛рдмреНрджрд┐рдХ UTF-8 рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдП рдЧрдП рд╣реЛрдВред рдпреВрдЯреАрдПрдл -8 рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдПрдирдХреЛрдб рдХрд┐рдП рдЧрдП рдЧреИрд░-рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ рдЕрдХреНрд╖рд░реЛрдВ рд╡рд╛рд▓реА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ - рдпрджрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдпреВрдЯреАрдПрдл -8 рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ рддреЛ рдЖрдк рдЕрдирд╛рдбрд╝реА рдкрд╛рда рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реА ++ 11 рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ char16_t рдФрд░ char32_t рд╡рд░реНрдг рдХреЗ рдмрд╛рдж рд╕реЗ рд╡реЗ рдЧреИрд░-рдпреВрдЯреАрдПрдл -8 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдПрдХ рд╣реА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ wchar_t (рдЬрдм рд╡рд┐рдВрдбреЛрдЬ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЛ рдЫреЛрдбрд╝рдХрд░ wchar_t )ред

рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдмрдирд╛рдо рдЯреИрдм


рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдПрдХ рдЗрдВрдбреЗрдВрдЯ рдХреЗ рд▓рд┐рдП 2 рд╕реНрдерд╛рдиред
рд╣рдо рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЯреИрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ - рдЯреИрдм рджрдмрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред

рд╕рдорд╛рд░реЛрд╣ рдХреА рдШреЛрд╖рдгрд╛рдПрдБ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ


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

рд╕рд╣реА рдлрд╝рдВрдХреНрд╢рди рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

ReturnType ClassName::FunctionName(Type par_name1, Type par_name2) {
  DoSomething();
  ...
}

рдпрджрд┐ рдПрдХ рдкрдВрдХреНрддрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ:

ReturnType ClassName::ReallyLongFunctionName(Type par_name1, Type par_name2,
                                             Type par_name3) {
  DoSomething();
  ...
}

рдпрд╛, рдпрджрд┐ рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рднреА рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИ:

ReturnType LongClassName::ReallyReallyReallyLongFunctionName(
    Type par_name1,  //  4 
    Type par_name2,
    Type par_name3) {
  DoSomething();  //  2 
  ...
}

рдХреБрдЫ рдиреЛрдЯ:

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

рдпрджрд┐ рдпрд╣ рд╕рдВрджрд░реНрдн рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рддреЛ рдЖрдк рдЕрдкреНрд░рдпреБрдХреНрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдирд╛рдо рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

class Foo {
 public:
  Foo(const Foo&) = delete;
  Foo& operator=(const Foo&) = delete;
};

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

class Shape {
 public:
  virtual void Rotate(double radians) = 0;
};

class Circle : public Shape {
 public:
  void Rotate(double radians) override;
};

void Circle::Rotate(double /*radians*/) {}

//   -  -     ,
//    .
void Circle::Rotate(double) {}

рд╡рд┐рдЬреНрдЮрд╛рдкрди рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ,
рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░ рддрдХ:
ABSL_MUST_USE_RESULT bool IsOk();

lambdas


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

рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдЪрд░ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдореНрдкрд░рд╕реЗрдВрдб (&) рдФрд░ рдЪрд░ рдирд╛рдо рдХреЗ рдмреАрдЪ рдПрдХ рд╕реНрдерд╛рди рди рд░рдЦреЗрдВред

int x = 0;
auto x_plus_n = [&x](int n) -> int { return x + n; }

рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдШреБ рд▓рдВрдмреЛрджрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

std::set<int> blacklist = {7, 8, 9};
std::vector<int> digits = {3, 9, 1, 8, 4, 7, 1};
digits.erase(std::remove_if(digits.begin(), digits.end(), [&blacklist](int i) {
               return blacklist.find(i) != blacklist.end();
             }),
             digits.end());

рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛рдПрдВ


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

float f = 1.f;
long double ld = -.5L;
double d = 1248e6;

float f = 1.0f;
float f2 = 1;   //  
long double ld = -0.5L;
double d = 1248.0e6;

рдлрдВрдХреНрд╢рди рдХреЙрд▓


рдпрд╛ рддреЛ рдкреВрд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд▓рд┐рдЦреЗрдВ, рдпрд╛ рдПрдХ рдирдИ рд▓рд╛рдЗрди рдкрд░ рддрд░реНрдХ рд░рдЦреЗрдВред рдФрд░ рдЗрдВрдбреЗрдВрдЯ рдпрд╛ рддреЛ рдкрд╣рд▓реЗ рддрд░реНрдХ рдкрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ 4 рд╕реНрдерд╛рдиреЛрдВ рдкрд░ред рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдЗрди рдкрд░ рдХреБрдЫ рддрд░реНрдХ рд░рдЦреЗрдВред

рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдкреНрд░рд╛рд░реВрдк:

bool result = DoSomething(argument1, argument2, argument3);

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

bool result = DoSomething(averyveryveryverylongargument1,
                          argument2, argument3);


рдЗрд╕реЗ 4 рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдЗрдВрдбреЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рддрд░реНрдХ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ:
if (...) {
  ...
  ...
  if (...) {
    bool result = DoSomething(
        argument1, argument2,  //  4 
        argument3, argument4);
    ...
  }

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

рдпрджрд┐ рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рдкрд░ рдХрдИ рддрд░реНрдХ рдкрдардиреАрдпрддрд╛ (рднрд╛рд╡реЛрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдпрд╛ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг) рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП "рдмреЛрд▓рдиреЗ" рд╡рд╛рд▓реЗ рдЪрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

int my_heuristic = scores[x] * y + bases[x];
bool result = DoSomething(my_heuristic, x, y, z);

рдпрд╛ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдкрд░ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рд░рдЦреЗрдВ рдФрд░ рдПрдХ рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ:

bool result = DoSomething(scores[x] * y + bases[x],  //  
                          x, y, z);

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

рддрд░реНрдХ рдХрднреА-рдХрднреА рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рддрд░реНрдХреЛрдВ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░реЗрдВ:

//     3x3
my_widget.Transform(x1, x2, x3,
                    y1, y2, y3,
                    z1, z2, z3);


рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪреА рддреИрдпрд╛рд░ рдХрд░рдирд╛


рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реВрдЪреА рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░реЗрдВред

рдпрджрд┐ рдХреЛрд╖реНрдардХ рдореЗрдВ рд╕реВрдЪреА рдирд╛рдо (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдЪрд░ рдХрд╛ рдирд╛рдо) рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреА рд╣реИ, рддреЛ рдкреНрд░рд╛рд░реВрдк {} рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдЙрд╕ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдерд╛ред рдпрджрд┐ рдХреЛрдИ рдирд╛рдо рдирд╣реАрдВ рд╣реИ, рддреЛ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЦрд╛рд▓реА рд╣реИред

//      .
return {foo, bar};
functioncall({foo, bar});
std::pair<int, int> p{foo, bar};

//     .
SomeFunction(
    {"assume a zero-length name before {"},
    some_other_function_parameter);
SomeType variable{
    some, other, values,
    {"assume a zero-length name before {"},
    SomeOtherType{
        "Very long string requiring the surrounding breaks.",
        some, other values},
    SomeOtherType{"Slightly shorter string",
                  some, other, values}};
SomeType variable{
    "This is too long to fit all in one line"};
MyType m = {  // Here, you could also break before {.
    superlongvariablename1,
    superlongvariablename2,
    {short, interior, list},
    {interiorwrappinglist,
     interiorwrappinglist2}};

рд╢рд░реНрддреЗрдБ


рдХреЛрд╖реНрдардХ рдХреЗ рдЕрдВрджрд░ рдкрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕рдореНрдорд┐рд▓рд┐рдд рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдкреНрд▓реЗрд╕ рдпрджрд┐ рдФрд░ рдХрд┐рд╕реА рдФрд░ рдЕрд▓рдЧ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ред

рд╕реНрд╡рд░реВрдкрдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВред рдПрдХ рдХреЛрд╖реНрдардХ рдФрд░ рдПрдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмреАрдЪ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

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

if (condition) {  //    
  ...  //  2 
} else if (...) {  // 'else'      
  ...
} else {
  ...
}

рдпрджрд┐ рдПрдХ рдЕрдВрддрд░рд┐рдХреНрд╖ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ:

if ( condition ) {  //   
  ...  //  2 
} else {  // 'else'      
  ...
}

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрджрд┐ рдФрд░ рдЙрджреНрдШрд╛рдЯрди рдмреНрд░реИрдХреЗрдЯ рдХреЗ рдмреАрдЪ рдПрдХ рд╕реНрдерд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред рдЖрдкрдХреЛ рд╕рдорд╛рдкрди рдмреНрд░реИрдХреЗрдЯ рдФрд░ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реИрдХреЗрдЯ (рдпрджрд┐ рд╡рд╣рд╛рдБ рдПрдХ рд╣реИ) рдХреЗ рдмреАрдЪ рдПрдХ рд╕реНрдерд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

if(condition) {   //  -    'if'
if (condition){   //  -    {
if(condition){    //  

if (condition) {  //   -     'if'   {

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

if (x == kFoo) return new Foo();
if (x == kBar) return new Bar();

рдпрджрд┐ рджреВрд╕рд░рд╛ рдЦрдВрдб рд╣реИ, рддреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ :

//  -    ,   'else'
if (x) DoThis();
else DoThat();

рдЖрдорддреМрд░ рдкрд░ рдЫреЛрдЯреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдмреНрд░реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИрдВред рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдпрд╛ рдХреЛрдб рдХреЛ рднреА рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдЕрдЧрд░ рдХреЛрд╖реНрдардХ рдХреЗ рд╕рд╛рде рд╣реЛред

if (condition)
  DoSomething();  //  2 

if (condition) {
  DoSomething();  //  2 
}

рдФрд░ рдЕрдЧрд░ рд╣рд╛рд▓рдд рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрдирдХреЗ рд╕рд╛рде рджреВрд╕рд░рд╛ рднреА рдЬрд╛рд░реА рдХрд░реЗрдВ:

//  -    'if',  'else' - 
if (condition) {
  foo;
} else
  bar;

//  -    'else',  'if' - 
if (condition)
  foo;
else {
  bar;
}


//  -     'if'   'else'
if (condition) {
  foo;
} else {
  bar;
}

рд▓реВрдк рдФрд░ рд╕реНрд╡рд┐рдЪ


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

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



switch (var) {
  case 0: {  //  2 
    ...      //  4 
    break;
  }
  case 1: {
    ...
    break;
  }
  default: {
    assert(false);
  }
}

рдПрдХ рд▓реЗрдмрд▓ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЛ рдореИрдХреНрд░реЛ ABSL_FALLTHROUGH_INTENDED рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ; ( рдЕрдиреБрдкрд╕реНрдерд┐рдд / рдЖрдзрд╛рд░ / macros.h рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд )ред
рдЬрдЧрд╣ ABSL_FALLTHROUGH_INTENDED; рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЬрд╣рд╛рдВ рд╕рдВрдХреНрд░рдордг рд╣реЛрдЧрд╛ред рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдЕрдкрд╡рд╛рдж рдПрдХ рдХреЛрдб рдХреЗ рдмрд┐рдирд╛ рд▓рдЧрд╛рддрд╛рд░ рд▓реЗрдмрд▓ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

switch (x) {
  case 41:  //  
  case 43:
    if (dont_be_picky) {
      //    ( )    
      ABSL_FALLTHROUGH_INTENDED;
    } else {
      CloseButNoCigar();
      break;
    }
  case 42:
    DoSomethingSpecial();
    ABSL_FALLTHROUGH_INTENDED;
  default:
    DoSomethingGeneric();
    break;
}

рдПрдХрд▓-рдСрдкрд░реЗрд╢рди рд▓реВрдк рдХреЗ рд▓рд┐рдП рдмреНрд░реИрдХреЗрдЯ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВред

for (int i = 0; i < kSomeNumber; ++i)
  printf("I love you\n");

for (int i = 0; i < kSomeNumber; ++i) {
  printf("I take it back\n");
}

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

while (condition) {
  //    false
}
for (int i = 0; i < kSomeNumber; ++i) {}  // .      -   
while (condition) continue;  //  - continue     

while (condition);  //  -     do/while

рд╕рдВрдХреЗрдд рдФрд░ рд▓рд┐рдВрдХ


рдЪрд╛рд░реЛрдВ рдУрд░ 'ред' рдФрд░ '->' рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рди рдбрд╛рд▓реЗрдВред рдбреЗрд░реЗрдлреНрд░реЗрдВрд╕рд┐рдВрдЧ рдпрд╛ рдХреИрдкреНрдЪрд░рд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░ рдмрд┐рдирд╛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рдВрдХреЗрдд рдФрд░ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЙрдЪрд┐рдд рд╕реНрд╡рд░реВрдкрдг рдХреЗ рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ:

x = *p;
p = &x;
x = r.y;
x = r->y;

рдзреНрдпрд╛рди рджреЗрдВ:

  • 'ред' рдФрд░ '->' рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • * рдпрд╛ & рдСрдкрд░реЗрдЯрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдПрдХ рдЪрд░ рдпрд╛ рддрд░реНрдХ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдЯрд╛рдЗрдк рдФрд░ рдирд╛рдо рджреЛрдиреЛрдВ рдкрд░ '*' рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

// ,   *, &
char *c;
const std::string &str;

// ,   *, &
char* c;
const std::string& str;

рдХреЛрдб рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХрд▓ рд╢реИрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ; рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реНрд╡рд░реВрдкрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЗрд╕реЗ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдХрдИ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдВрдХреЗрдд рдпрд╛ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдХрдИ рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ - рдпрд╣ рдЧрд▓рдд рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

//  - 
int x, y;

int x, *y;  //  -      &  *
char * c;  //  -     *
const std::string & str;  //  -     &

рддрд╛рд░реНрдХрд┐рдХ рднрд╛рд╡


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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдВрдб рдСрдкрд░реЗрдЯрд░ рдХреЛ рд▓рдкреЗрдЯрддреЗ рд╕рдордп рд▓рд╛рдЗрди рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИ:

if (this_one_thing > this_other_thing &&
    a_third_thing == a_fourth_thing &&
    yet_another && last_one) {
  ...
}

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЛрдб рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░) рддрд╛рдХрд┐ && рдФрд░ AND рдСрдкрд░реЗрдЯрд░ рд▓рд╛рдЗрди рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВред рдпрд╣ рд╢реИрд▓реА рдЕрдХреНрд╕рд░ Google рдХреЛрдб рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд▓рд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рд╕реНрдерд╛рди рднреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрд╖реНрдардХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди (рдЬреИрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ && рдФрд░ ~ ) рд╢рдмреНрдж рдХреЗ рд░реВрдк рдореЗрдВ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ рдФрд░ рдФрд░ compl ред

рдорд╛рди рд▓реМрдЯрд╛рдПрдВ


рдХреЛрд╖реНрдардХ рдореЗрдВ рд╕рд░рд▓ рд░рд┐рдЯрд░реНрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕рдВрд▓рдЧреНрди рди рдХрд░реЗрдВ ред рд╡рд╛рдкрд╕реА expr

рдореЗрдВ рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ; рдХреЗрд╡рд▓ рдЕрдЧрд░ рдЖрдкрдиреЗ рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕ = рдПрдХреНрд╕рдкреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ ; ред

return result;                  //   -  
//  - .    
return (some_long_condition &&
        another_condition);

return (value);                // . ,      var = (value);
return(result);                // . return -   !

рд╡реИрд░рд┐рдПрдмрд▓реНрд╕ рдФрд░ рдПрд░рд░реНрд╕ рдХреЛ рдЖрд░рдореНрдн рдХрд░рдирд╛


рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: = , () рдпрд╛
{} рдЖрдкрдХреА рдкрд╕рдВрдж рд╣реИред

рдЖрдк рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ = ,
() рдФрд░ {} ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рд╕рд╣реА рд╣реИрдВ:

int x = 3;
int x(3);
int x{3};
std::string name = "Some Name";
std::string name("Some Name");
std::string name{"Some Name"};

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪреА {{}} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ, рдЬрд┐рд╕рдореЗрдВ std :: initializer_list рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реИ ред

рдХрдВрдкрд╛рдЗрд▓рд░ std :: initializer_list рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдЧрд╛ рдЬрдм рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ рдПрдХ рд╕реВрдЪреА рд╣реЛрдЧреА ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЦрд╛рд▓реА рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕реЗрд╕ {} рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрджрд┐ рдЙрдкрд▓рдмреНрдз рд╣реЛ)ред рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд┐рдирд╛ std :: initializer_list рдХреЗ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ , рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЗ рдмрдЬрд╛рдп рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

std::vector<int> v(100, 1);  //    
std::vector<int> v{100, 1};  //   2- : 100  1


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдШреБрдВрдШрд░рд╛рд▓реЗ рдХреЛрд╖реНрдардХ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ (рд╕рдЯреАрдХрддрд╛ рдореЗрдВ рдХрдореА рдХреЗ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрди) рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЖрдк рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

int pi(3.14);  // : pi == 3
int pi{3.14};  //  : "" 

рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢


рд╕рд╛рдЗрди # (рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рд╕рдВрдХреЗрдд) рд▓рд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢ рдПрдореНрдмреЗрдбреЗрдб рдХреЛрдб рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдирд┐рд░реНрджреЗрд╢ рдкрдВрдХреНрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред

//  -    
  if (lopsided_score) {
#if DISASTER_PENDING      //  -    
    DropEverything();
# if NOTIFY               //   # - ,   
    NotifyClient();
# endif
#endif
    BackToNormal();
  }

//  -   
  if (lopsided_score) {
    #if DISASTER_PENDING  // ! "#if"     
    DropEverything();
    #endif                // !     "#endif"
    BackToNormal();
  }

рдХрдХреНрд╖рд╛ рд╕реНрд╡рд░реВрдкрдг


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдореЗрдВ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ: рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ , рд╕рдВрд░рдХреНрд╖рд┐рдд рдФрд░ рдирд┐рдЬреА ред рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдПрдХ рдЬрдЧрд╣ рд╣реИред

рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдкреНрд░рд╛рд░реВрдк рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╣реИ (рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рд╡рд░реНрдЧ рд╡рд┐рд╡рд░рдг рдкрд░ рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ):

class MyClass : public OtherClass {
 public:      //  1 
  MyClass();  //  2-  
  explicit MyClass(int var);
  ~MyClass() {}

  void SomeFunction();
  void SomeFunctionThatDoesNothing() {
  }

  void set_some_var(int var) { some_var_ = var; }
  int some_var() const { return some_var_; }

 private:
  bool SomeInternalFunction();

  int some_var_;
  int some_other_var_;
};

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ:

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

рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪреА


рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд▓рд┐рд╕реНрдЯ рдПрдХ рд▓рд╛рдЗрди рдкрд░ рдпрд╛ 4 рд╕реНрдкреЗрд╕ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЖрд░рдВрднрд┐рдХ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╣реА рдкреНрд░рд╛рд░реВрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ:

//    
MyClass::MyClass(int var) : some_var_(var) {
  DoSomething();
}

//          ,
//           
MyClass::MyClass(int var)
    : some_var_(var), some_other_var_(var + 1) {
  DoSomething();
}

//     ,     
//     
MyClass::MyClass(int var)
    : some_var_(var),             //  4 
      some_other_var_(var + 1) {  //   
  DoSomething();
}

//     ,       
MyClass::MyClass(int var)
    : some_var_(var) {}

рд╕реНрд╡рд░реВрдкрдг рдирд╛рдорд╕реНрдерд╛рди


рдиреЗрдорд╕реНрдкреЗрд╕ рдХрдВрдЯреЗрдВрдЯ рдЗрдВрдбреЗрдВрдЯ рд╣реИред

рдирд╛рдо рд╕реНрдерд╛рди рдЧрджреНрджреА рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

namespace {

void foo() {  // .   
  ...
}

}  // namespace

рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдЗрдВрдбреЗрдВрдЯ рди рдХрд░реЗрдВ:

namespace {

  // .   ,   
  void foo() {
    ...
  }

}  // namespace

рдиреЗрд╕реНрдЯреЗрдб рдиреЗрдорд╕реНрдкреЗрд╕ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рддреНрдпреЗрдХ рдШреЛрд╖рдгрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдкрд░ рд░рдЦреЗрдВред

namespace foo {
namespace bar {

рдХреНрд╖реИрддрд┐рдЬ рд╡рд┐рдЦрдВрдбрди


рдЙрдкрдпреБрдХреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд╖реИрддрд┐рдЬ рдЯреВрдЯрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХрднреА рди рдЬреЛрдбрд╝реЗрдВред

рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд


void f(bool b) {  //       
  ...
int i = 0;  //       
//            .
//    ,      
int x[] = { 0 };
int x[] = {0};

//        
class Foo : public Bar {
 public:
  //  inline-  
  //     (  )
  Foo(int b) : Bar(), baz_(b) {}  //    
  void Reset() { baz_ = 0; }  //      
  ...

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

рдЪрдХреНрд░ рдФрд░ рд╕реНрдерд┐рддрд┐рдпрд╛рдБ


if (b) {          //        
} else {          //   else
}
while (test) {}   //       
switch (i) {
for (int i = 0; i < 5; ++i) {
//         .   .
//   ,  
switch ( i ) {
if ( test ) {
for ( int i = 0; i < 5; ++i ) {
//         
//          ,   
for ( ; i < 5 ; ++i) {
  ...

//           
for (auto x : counts) {
  ...
}
switch (i) {
  case 1:         //    case  
    ...
  case 2: break;  //    ,   (   )  

рдСрдкрд░реЗрдЯрд░реНрд╕


//     
x = 0;

//      ,
//   /   .
//          
v = w * x + y / z;
v = w*x + y/z;
v = w * (x + z);

//       
x = -5;
++x;
if (x && !y)
  ...

рдкреИрдЯрд░реНрди рдФрд░ рдХрд╛рд╕реНрдЯ


//       (<  >),
//  <,  >(  
std::vector<std::string> x;
y = static_cast<char*>(x);

//        .       
std::vector<char *> x;

рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЯреВрдЯрдирд╛


рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╡рд┐рднрд╛рдЬрди рдХрдо рд╕реЗ рдХрдо рдХрд░реЗрдВред

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

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

рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдиреЛрдЯреНрд╕:

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

All Articles