рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╕ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдХреНрд▓реЛрдЬрд░ ; рдпрд╣ рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдирд╛ рдХрд┐ рдЗрд╕ рдЬрд╛рдирд╡рд░ рдХреЛ рдХреИрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдореЗрдВ рд▓реВрдк рдЪрд░ рдХреЗ рд╕рд╛рде рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ: рдХреЛрдИ рдПрдХ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдмрд╕ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рднрд╛рд╖рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдХреНрдпрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдХреНрдпрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА (рдЬреИрд╕рд╛ рдХрд┐ рдЬрд╛рд╡рд╛ рдпрд╛ рд╕реА # рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛), рдпрд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ "рдмрд╣реБрд░реВрдкрд┐рдпрд╛" рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╡рд┐рдзрд┐ рдХреЛ (C ++ рдХреА рддрд░рд╣) рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рд╡рд┐рдзрд┐ рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИред рдЖрдЗрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реА # рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд┐рдзрд┐
рдлреВ ( int) рдФрд░ рдЧреИрд░-рдЖрднрд╛рд╕реА рд╡рд┐рдзрд┐
рдлреВ ( рдСрдмреНрдЬреЗрдХреНрдЯ) рдХреЗ рд╕рд╛рде
рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдореЗрдВ
рдмреЗрд╕ рдФрд░
рд╡реНрдпреБрддреНрдкрдиреНрди рдХреА рдПрдХ рдЬреЛрдбрд╝реА рд╣реИ:
class Base { public virtual void Foo(int i) { Console.WriteLine("Base.Foo(int)"); } } class Derived : Base { public override void Foo(int i) { Console.WriteLine("Derived.Foo(int)"); } public void Foo(object o) { Console.WriteLine("Derived.Foo(object)"); } }
рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рд╕ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:
int i = 42; Derived d = new Derived(); d.Foo(i);
рдкрд╣рд▓реА рдФрд░ рд╕рдмрд╕реЗ рдЙрдЪрд┐рдд рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐
рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд┐рдзрд┐
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдлреВ ( рдЗрдВрдЯ) , рдХреНрдпреЛрдВрдХрд┐ 42 рдПрдХ
рдЗрдВрдЯ рд╣реИ , рдФрд░
рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдореЗрдВ
рдлреВ ( рдЗрдВрдЯ) рд╡рд┐рдзрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ рдФрд░
рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛
ред рдлреВ ( рд╡рд╕реНрддреБ) ред
рдмреЗрд╢рдХ, рд╕реНрдорд╛рд░реНрдЯ рд▓реЛрдЧ рддреБрд░рдВрдд рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд╖реНрдХрд░реНрд╖ рджреЗрдВрдЧреЗ: рд╕рдВрдХрд▓рдХ, рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рд╡рд┐рдзрд┐ рдХреА рдШреЛрд╖рдгрд╛ рдФрд░ рдкреБрдирд░реНрд╡рд┐рддреНрдд рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╣, рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╡рд░реНрддрдорд╛рди рдЪрд░ (рдпрд╛рдиреА
рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдореЗрдВ) рдХреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдЙрдЪрд┐рдд рд╡рд┐рдзрд┐ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЙрдЪрд┐рдд рдЕрдзрд┐рднрд╛рд░ рд╣реИред рдпрджрд┐ рдпрд╣ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рднрд▓реЗ рд╣реА рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ), рддреЛ рдпрд╣ рдЗрд╕ рдкрд░ рд╢рд╛рдВрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдмреЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ (рдпрд╛рдиреА,
рдмреЗрд╕ рдХреНрд▓рд╛рд╕) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧрд╛, рднрд▓реЗ рд╣реА рд╡рд╛рд░рд┐рд╕ рджреНрд╡рд╛рд░рд╛ рдкреБрдирд░реНрдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╕рдВрд╕реНрдХрд░рдг рд╣реЛред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдЗрд╕ рддрдереНрдп рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдФрд░ рдкреБрдирд░реНрд╡рд┐рддрд░рдг рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдпрд╣ рдХрд┐ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рддрд░реАрдХреЗ рджреВрд╕рд░реА рддрд░рд╣ рдХреЗ "рддрд░реАрдХреЗ" рд╣реИрдВ, рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдЙрдирдХрд╛ рджреВрд╕рд░рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ (рдпрд╛ рдЗрд╕рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕) рдиреЗ рдХрд┐рддрдиреЗ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред
рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рддрдирд╛ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ, рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд▓реЗрдВ рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реА рд╢реНрд░реЗрдгреА рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ
рдлреВ ( рд╡рд╕реНрддреБ) рд╡рд┐рдзрд┐ рд╣реИ, рдФрд░ рдпрд╣
рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ:
class Base {} class Derived : Base { public void Foo(object o) { Console.WriteLine("Derived.Foo(object)"); } }
рд╣рд╛рдВ, рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреАред рдЗрд╕рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рдЙрдард╛рдПрдЧрд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓реЗ рдореЗрдВ
рдлреВ рдХреЙрд▓
рдХрд┐рд╕реЗ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ (рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ): рдирдпрд╛ рд╡реНрдпреБрддреНрдкрдиреНрди ()ред рдлреВ (42)ред
рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдЧрдарди, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрд╡рд▓рдкрд░реНрд╕,
рдЖрдзрд╛рд░ рдФрд░
рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЪреВрдВрдХрд┐
рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рдбреЗрд╡рд▓рдкрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐
рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдХрд╛ рдбреЗрд╡рд▓рдкрд░ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рд╡рд╛рд░рд┐рд╕ рд╡рд░реНрдЧ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдмрд┐рдВрджреБ рдкрд░
Foo рд╡рд┐рдзрд┐ рдХреЛ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ:
class Base { public virtual void Foo(int i) { Console.WriteLine("Base.Foo(int)"); } }
рдпрджрд┐ рд╣рдо рдореВрд▓ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрддреЗ рд╕рдордп рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд╣реЗ рдЧрдП рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ
рдлреВ рд╡рд┐рдзрд┐ рдФрд░ рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рдЕрдзрд┐рднрд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИ: рдирдпрд╛ рд╡реНрдпреБрддреНрдкрдиреНрди ()ред рдлреВ (42) рдХреЛ рдЕрдм рдЖрдзрд╛рд░ рд╡рд┐рдзрд┐ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ
рдмреЗрд╕ рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
ред рдлреВ ( рдЗрдВрдЯ) ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХрд┐рддрдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рдж,
рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛, рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдЕрдЪрд╛рдирдХ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ? рдмреЗрд╢рдХ, рд╣рдо рдпрд╣ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рди рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рддрднреА рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ рдЬрдм
рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдореЗрдВ рдХреЛрдИ рдЕрдзрд┐рднрд╛рд░ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рднреА рдЕрдЬрдирдмреА рд╣реЛрдЧрд╛ред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реА # рднрд╛рд╖рд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдФрд░ рдПрд░рд┐рдХ рд▓рд┐рдкрд░реНрдЯ рдХреЗ рдмреНрд▓реЙрдЧ рдХреЗ рдкрд╛рдардХреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реБрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐
"рднрдВрдЧреБрд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╕рд┐рдВрдбреНрд░реЛрдо" рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд┐рд╕реА рддрд░рд╣ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐
рд╕рдВрдХрд▓рдХ рдкрд╣рд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рдЪрд░ рдХреА рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕реАрдзреЗ рдШреЛрд╖рд┐рдд рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдзрд┐ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдШреЛрд╖рд┐рдд рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИредрдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рд╣рд╛рдВ, рдпрд╣ рд╕реАрдЦрдирд╛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, C ++, Java, рдпрд╛ рд╢рд╛рдпрдж рдПрдлрд┐рд▓ (рд╕рдмрд╕реЗ рдкрд░рд┐рд╖реНрдХреГрдд рдУрдУ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХрдИ рдХреА рд░рд╛рдп рдореЗрдВ)ред
рдореБрдЭреЗ рдЕрдВрдд рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рджреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдПрдлрд┐рд▓ рдореЗрдВ, рд╕рдорд╕реНрдпрд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд░реВрдк рд╕реЗ рд╣рд▓ рдХреА рдЧрдИ рд╣реИ: рдХрдИ рдХрдард┐рди рдУрдУ-рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдПрдлрд┐рд▓ рдореЗрдВ рдмрд╕ рдХреЛрдИ рд╡рд┐рдзрд┐ рдЕрдзрд┐рднрд╛рд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдк рд╡рдВрд╢ рдореЗрдВ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдХреЗ рд╕рдорд╛рди рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд┐рджрд╛рди рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдмрд╕ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред (рд╡реИрд╕реЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ рд╣реИред рдПрдХ рд╣реА рдПрдлрд┐рд▓ рдХрдИ рдЧреИрд░-рддреБрдЪреНрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдФрд░ рдпрджреНрдпрдкрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХрднреА-рдХрднреА рд╕рдорд╛рдзрд╛рди рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбреЛрдореЗрди рдбреЛрдореЗрди рдХреА рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ: рдХрднреА-рдХрднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рд░реЛрдХрдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╣ рдорд╣реАрдиреЗ рдорд╛рд░рдирд╛)ред
рдиреЛрдЯ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рдЪрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рдПрдлрд┐рд▓ рднрд╛рд╖рд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, C # рдореЗрдВ
рд╡рд░реНрдЪреБрдЕрд▓ рдИрд╡реЗрдВрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ VB.NET рдореЗрдВ рдмрд╣реБрдд рд╣реА рд╢рд╛рдиреНрдд рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рд╡рд░реНрдЪреБрдЕрд▓ рдЗрд╡реЗрдВрдЯреНрд╕ рдХреЛ рдЗрд╕рдореЗрдВ
рдмрд╕ рдордирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЬрд╛рд╡рд╛ рдФрд░ рд╕реА ++ рдореЗрдВ, рдЪреАрдЬреЗрдВ рдХреБрдЫ рдЕрд▓рдЧ рд╣реИрдВ рдФрд░ рдпрд╣ рдХрд╛рд░рдг рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпреЗ рднрд╛рд╖рд╛рдПрдВ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдШреЛрд╖рд┐рдд рдХрд░рддреА рд╣реИрдВред рдЗрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрднрд╛рд╕реАрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрд╛рд╡рд╛ рдореЗрдВ, рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рд╣реИрдВ, рдФрд░ рд╕реА ++ рдореЗрдВ рд╡рд┐рдзрд┐ рдЖрднрд╛рд╕реАрддрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП), рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╡рд░реНрдЧ рдореЗрдВ рдЖрднрд╛рд╕реА рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
class Base { public: virtual void Foo(Integer& i) {} }; class Derived : public Base { public:
рдЬрд╛рд╡рд╛ рдФрд░ рд╕реА ++ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдпрд╣ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╡рд░реНрдЧ рдореЗрдВ рд╕рдорд╛рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐, рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рдХреА рдШреЛрд╖рдгрд╛ рд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдХ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рдзрд┐ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ (
рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдХреЗ рджреЛ рддрд░реАрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ), рддреЛ рдпрд╣рд╛рдВ рд╡реНрдпрд╡рд╣рд╛рд░ C # рдХреЗ
рд╕рдорд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
Integer i; Derived *pd = new Derived; pd->Foo(i);
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рд╢реБрд░реВ рдореЗрдВ рдЙрдореНрдореАрдж рдХреА рдереА,
рдлреВ ( рдЗрдВрдЯреЗрдЧрд░ рдПрдВрдб) рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЬрд╛рд╡рд╛ рдФрд░ рд╕реА ++ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдмрд╛рдж рдореЗрдВ рд╡рд╛рд░рд┐рд╕ рдореЗрдВ рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдкрдиреЗ рдЗрд░рд╛рджреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рдЧрдпрд╛ред рдЬрд╛рд╡рд╛ рдореЗрдВ, рд╕рдВрд╕реНрдХрд░рдг 5 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдиреЛрдЯреЗрд╢рди рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ -
рдУрд╡рд░рд░рд╛рдЗрдб , рдФрд░ рд╕реА ++ 11 рдореЗрдВ рдПрдХ рдирдпрд╛ рдХреАрд╡рд░реНрдб "рдУрд╡рд░рд░рд╛рдЗрдб" рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рд╛ рд╣реИред
рдиреЛрдЯрд╡реИрд╕реЗ, рдкрд┐рдЫрд▓реЗ рдорд╛рдирдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ C ++ 11 рдореЗрдВ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, Bjarne Straustrup рдХрд╛ FAQ рдЕрдиреБрд╡рд╛рдж рджреЗрдЦреЗрдВ:
C ++ 11 FAQ ред
рд╕рдЪ рд╣реИ, рдЬрд╛рд╡рд╛ рдФрд░ рд╕реА ++ рднрд╛рд╖рд╛рдУрдВ рдХреА рд╕рдорд╛рдирддрд╛ рдпрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдк
рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдореЗрдВ
Foo ( Integer &) рд╡рд┐рдзрд┐ рдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ
Derived :: Foo ( Object &) рдХреЛ C ++ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЕрд░реНрдерд╛рдд рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдХреЛ рдЙрдореНрдореАрджрд╡рд╛рд░ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛), рдФрд░ Java -
Base рдореЗрдВред рдлреВ ( рдкреВрд░реНрдгрд╛рдВрдХ) ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдУрд╡рд░рд▓реЛрдб рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬрд╝ рд╣реИ (
рдпрд╣рд╛рдБ рдкреБрд╖реНрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдХреЛрд╡ рдХреЗ рдЕрдзреНрдпрдпрдиреЛрдВ рдореЗрдВ
рд╕реЗ рдПрдХ рд╣реИ), рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдФрд░ рднреА рдЬрдЯрд┐рд▓ рд╣реИред рдПрдХ рдУрд░, C # рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд▓рдд рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХрд╛ рд╡рдЬрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд╛рдлреА рддрд╛рд░реНрдХрд┐рдХ рд╣реЛрдЧрд╛ рдФрд░ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рд╕рд▓рд╛рд╣ рд╕рдорд╛рди рд╣реЛрдЧреА: рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рд╡рд┐рдзрд┐ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдкреБрдирд░реНрд╡рд┐рддрд░рдг рдорд┐рд╢реНрд░рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ (рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рддреАрди рдХрд╛рдлреА рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╣рдореЗрдВ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рдорд┐рд▓рд╛)ред