рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдЕрдиреБрдХреВрд▓рди


Microsoft рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрдкрдХреЛ рд╡рд░реНрдЧ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп __declspec рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП "novtable" рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдХрд╣рд╛ рдЧрдпрд╛ рд▓рдХреНрд╖реНрдп рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░рдирд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдбреАрдПрд▓рдПрд▓ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ 0.6 рд╕реЗ 1.2 рдкреНрд░рддрд┐рд╢рдд рддрдХ рдХреА рдХрдореА рдЖрдИред

рдкреНрд░рдпреЛрдЬреНрдпрддрд╛: рдХрдХреНрд╖рд╛рдПрдВ рд╕реАрдзреЗ рдЙрдирд╕реЗ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдПрдВред

рдХреЛрдб рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

struct __declspec(novtable) IDrawable { virtual void Draw() const = 0; }; 

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

"рдиреЛрд╡рд┐рдЯреЗрдмрд▓" рдирд╛рдо рдХрд╛ рд╡рд╛рджрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡рд░реНрдЪреБрдЕрд▓ рдЯреЗрдмрд▓ рдирд╣реАрдВ рд╣реЛрдЧреА ... рд▓реЗрдХрд┐рди рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдирд┐рдореНрди рдХреЛрдб рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

 //   ,   IDrawable: class Rectangle : public IDrawable { virtual void Draw() const override { } int width; int height; }; тАж IDrawable* drawable = new Rectangle; drawable->Draw(); //   Rectangle::Draw тАж 


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

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

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


рдЪреВрдВрдХрд┐ IDrawable рдореЗрдВ рдбреНрд░рд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ("= 0" рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдХреЗ рдмрдЬрд╛рдп рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдкреНрдпреЛрд░рдХреЙрд▓ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

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



"Novtable" рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ Microsoft рдХреЛрдб рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ?


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

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

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рди рдХреЗрд╡рд▓ рдЖрдХрд╛рд░ рдореЗрдВ рдХрдореА рд╣реИ, рдмрд▓реНрдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдХреБрдЫ рддреНрд╡рд░рдг рднреА рд╣реИрдВред

RTTI


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



рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рд╕рдВрдХрд▓рдХ рдХреЛ рдЖрд░рдЯреАрдЯреАрдЖрдИ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ novtable рднреА IDrawable рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реЗрд╡рд╛ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП type_info рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдмрд╛рд╣рд░ рдХрд░рддрд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рддрд░рд╣ рдЬреНрдЮрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ reducible рдкреЙрдЗрдВрдЯрд░ (рд▓рд┐рдВрдХ) рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ std :: static_cast рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП RTTI рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

Microsoft рд╡рд┐рд╢рд┐рд╖реНрдЯ


MSVC рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╕рдордп рдХреНрд▓реИрдВрдЧ рдореЗрдВ рд╕рдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдореМрдЬреВрдж рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


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

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


All Articles