рдпрд╣рд╛рдВ рдореБрдЭреЗ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдерд╛ рдХрд┐ C рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдорд╛рди рдХреИрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдФрд░ рдореБрдЭреЗ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдЗрддрдиреА рдХрдореА рдереА рдХрд┐ рдореИрдВ рд╕реЛрдЪрдиреЗ рд▓рдЧрд╛ рдХрд┐ C рдХреЛ C ++ рдХреЗ рдХрд░реАрдм рдХреИрд╕реЗ рд▓рд╛рдпрд╛ рдЬрд╛рдПред рдХреНрдпреЛрдВ? рдРрд╕реЗ рд╣реА рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдХреЛ рд╕реНрдЯреНрд░реЗрдЪ рдХрд░реЗрдВред
рдореБрдЦреНрдп рдЗрдЪреНрдЫрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдереА: рдореИрдВ рд╕реА рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:
void print_name( Iface* ptr ) { ptr->print_name(); } void main() { A a; B b; print_name( &a );
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдП рдФрд░ рдмреА рдПрдХ рд╣реА (рдпрд╛ рд╢рд╛рдпрдж рдХрдИ) рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдУрдВ) рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, рдЖрдк рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓ рддрд░реАрдХреЗ рд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреЙрдЗрдВрдЯрд░ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреА рдЧрдИ рдереАред
рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ (рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ) рдФрд░ рдЬреЛ рд╕реА ++ рдореЗрдВ рдЖрднрд╛рд╕реА рддрд░реАрдХреЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд░рдЦрддрд╛ рд╣реВрдВ, рдореИрдВ рдмрд┐рд▓реНрд▓реА рд╕реЗ рдкреВрдЫрддрд╛ рд╣реВрдВред
рдХреНрдпрд╛ рддреИрдпрд╛рд░ рд╣реИ?
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдореИрдВ рдПрдХрдорд╛рддреНрд░ рдРрд╕рд╛ рдЪрддреБрд░ рд╡реНрдпрдХреНрддрд┐ рдирд╣реАрдВ рд╣реВрдВред рд╕рдВрд░рдЪрдирд╛рдУрдВ рдкрд░ рддрд░реАрдХреЛрдВ рдХреЛ рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╕реЗ рдПрдХ
рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗред
рдРрд╕реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдиреБрдХрд╕рд╛рди рдХреНрдпрд╛ рд╣реИрдВ?
- рд╕рдВрд░рдЪрдирд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╕рдВрджрд░реНрдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
- рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЗ рдХрдИ "рд╡рд┐рд░рд╛рд╕рдд" рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓рддрд╛ (рдЕрд╕рддреНрдп?)
рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ?
рдПрдХ рдЕрд▓рдЧ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрдЬрд╛рдп, рдЬреЛ рддрд░реАрдХреЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ, рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкрдиреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдбрд╛рд▓реЗрдВрдЧреЗред рдФрд░ рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред
рдпрджрд┐ рдЖрдкрдХреЛ рдХрдИ "рд╡рд┐рд░рд╛рд╕рдд" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо
рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рддрд░реАрдХреЗ, рдлрд┐рд░ рджреВрд╕рд░реЗ рдХреЗ рддрд░реАрдХреЗ, рдЖрджрд┐ рдбрд╛рд▓реЗрдВрдЧреЗред
рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЬреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ
рдкрд╣рд▓реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ
рдкреЙрдЗрдВрдЯрд░ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдЪреВрдВрдХрд┐ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдПрдХ рд╕рдВрд░рдЪрдирд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдкрддреЗ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдЗрд╕ рдкрддреЗ рдХреА рднрд░рдкрд╛рдИ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рдиреБрдХрд╕рд╛рди рд╕реНрдкрд╖реНрдЯ рд╣реИ: рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╡рд┐рд╕реНрдерд╛рдкрди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдпрд╛ рддреЛ рдкреИрдХреЗрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдСрдлрд╕реЗрдЯ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛: рдореИрдВрдиреЗ рд╕реНрдХреЛрд░ рдХрд┐рдпрд╛ рдФрд░ рд╕реЛрдЪрд╛ рдХрд┐ рд╕реВрдЪрдХ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрдг рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реЗрдбрд░ рдФрд░ VS2010 рдХрд╛ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реА рдореЛрдб рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХреА рдЧрдИ рд╣реИред
рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!
рдЗрдВрдЯрд░рдлреЗрд╕
рдЗрд╕рд▓рд┐рдП, рд╣рдо рджреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВред
рдкрд╣рд▓рд╛,
base_iface , рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрддрд╛ рд╣реИред
рджреВрд╕рд░рд╛,
sizible_iface , рдЖрдкрдХреЛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдХрд╛рд░ рдкрддрд╛ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рджреВрд░ рдХреА рдХреМрдбрд╝реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд░реЗрдВрдЧреЗред
base_iface.h #pragma once typedef struct base_iface* base_iface_ptr; typedef const char* (*get_name_func_ptr)( base_iface_ptr ); struct base_iface { get_name_func_ptr get_name; }; typedef struct base_iface base_iface;
sizible_iface.h #pragma once typedef struct sizible_iface* sizible_iface_ptr; typedef unsigned int (*get_size_func_ptr)( sizible_iface_ptr ); struct sizible_iface { get_size_func_ptr get_size; }; typedef struct sizible_iface sizible_iface;
рдХрдХреНрд╖рд╛рдПрдВ
рд╣рдо рджреЛ рд╕рдВрд░рдЪрдирд╛рдПрдБ рдмрдирд╛рддреЗ рд╣реИрдВ,
point_t рдФрд░
d3_point_t , рдЬреЛ рдХреНрд░рдорд╢рдГ рджреЛ-рдЖрдпрд╛рдореА рдФрд░ рддреАрди-рдЖрдпрд╛рдореА рд╕реНрдерд╛рди рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рд╕рдВрдХреЗрдд рд╣реЛрддреЗ рд╣реИрдВ: "рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ", "рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ" рдФрд░ "рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ"ред
рдкрд╣рд▓рд╛ рдкреЙрдЗрдВрдЯрд░ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ
рдмреЗрд╕_рдлреИрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ "рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕" рд╣реИред
рджреВрд╕рд░рд╛ рд╕реВрдЪрдХ рдПрдХ рдЖрднрд╛рд╕реА рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ
sizible_iface рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА "рд╡рд┐рд░рд╛рд╕рдд" рд╣реИред
рддреАрд╕рд░рд╛ рдкреЙрдЗрдВрдЯрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рддрд░реАрдХрд╛ рд╣реИ, рд╡рд░реНрдЪреБрдЕрд▓ рдирд╣реАрдВред
рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдлрд╝рд╛рдЗрд▓реЗрдВ рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ:
point.h #pragma once typedef struct point_t* point_ptr; typedef void (*point_print_coordinates_func)( point_ptr ); struct point_t
3d_point.h #pragma once typedef struct d3_point_t* d3_point_ptr; typedef void (*d3_point_print_coordinates_func)( d3_point_ptr ); struct d3_point_t
рдПрдХ 3D рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдЖрднрд╛рд╕реА "рддрд░реАрдХреЛрдВ" рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рдХреА рдХрд┐ рдХреИрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдкрд░ рдЖрднрд╛рд╕реАрддрд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИ (рдЕрдкрдиреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд░рдЦрдиреЗ рдореЗрдВ рд╕рдорд╛рди рдирд╣реАрдВ)ред
рдЪреВрдБрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ
рдкреЙрдЗрдВрдЯ_ рдЯреА * рдФрд░
рдбреА 3_ рдкреЙрдЗрдВрдЯ_ рдЯреА * рд╕реЗ
рдмреЗрд╕_рдЖрдИрдПрдлрдПрд╕ * рдФрд░
рд╕рд┐рдЬрд┐рдмрд▓_рдЖрдИрдПрдлрдПрд╕ * рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕реЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рдирд╛
рд╣реЛрдЧрд╛ ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд▓реЗ рд╕рдХреЗрдВ рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ рдХрд┐ рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдмрд┐рдВрджреБ_ рдФрд░
d3_point_t рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
point.s #include "std.h" static point_ptr base_iface_to_point( base_iface_ptr ptr );
3d_point.c #include "std.h" static d3_point_ptr base_iface_to_d3_point( base_iface_ptr ptr );
рддреЛ, рд╕рднреА рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдПрдХ
рд╕реНрдерд┐рд░ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдмрд╛рд╣рд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрджреГрд╢реНрдп рдмрдирд╛рддрд╛ рд╣реИред
рдЖрднрд╛рд╕реА рддрд░реАрдХреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреБрдЪреНрдЫ рд╣реИ: рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рд╣рдо C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:
- рд╣рдо рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рди рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреА рдСрдлрд╕реЗрдЯ рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ (рд╣рдордиреЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ рдерд╛)
- рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЧрдП рдкреЙрдЗрдВрдЯрд░ рд╕реЗ рдЗрд╕ рдСрдлрд╕реЗрдЯ рдХреЛ рдШрдЯрд╛рдПрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╕реЗ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд▓рд╛рдПрдВ
- рд╕рдВрдкреВрд░реНрдг рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реЛрдиреЗ рдкрд░, рдЖрдк рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, "рдЖрднрд╛рд╕реА рддрд░реАрдХреЛрдВ" рдХреА рд╕рд╛рдордЧреНрд░реА рдХреБрдЫ рд╣рдж рддрдХ рддрдирд╛рд╡рдкреВрд░реНрдг рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрди "рддрд░реАрдХреЛрдВ" рдХреЗ рдЕрдВрджрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ
рд╕рднреА рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдФрд░ рдЕрдм рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдЖрднрд╛рд╕реАрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред
рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХрд┐ рдПрдХ рдкреНрд░реА-рдХреИрдкреНрдб рд╣реЗрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдПрдЧреА:
рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдЦреБрдж:
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╣реИрдВ: рд╣рдордиреЗ рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рд╣реИ рдЬреЛ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╣рдорд╛рд░реА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдкреЙрдЗрдВрдЯрд░реНрд╕ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЗрди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
VS2010 (рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦреЗрдВрдЧреЗ:
name = "Null point" size = 8 x = 0, y = 0 name = "Some point" size = 8 x = 1, y = 5 name = "Null 3D point" size = 12 x = 0, y = 0, z = 0 name = "Some 3D point" size = 12 x = 0, y = 1, z = 0 Press any key to exit...
рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рд╡рд░реНрдЪреБрдЕрд▓ рдЗрдВрдЯрд░рдлреЗрд╕" рд╣реИ, "рдорд▓реНрдЯреАрдкрд▓ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕" рд╣реИ рдФрд░ рдкреНрд░реВрдл-рдСрдл-рдХреЙрдиреНрд╕реЗрдкреНрдЯ рд╣реИ! рд╕рдЪ рд╣реИ, рдХреЛрдб рдЙрддрдирд╛ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдЬрд┐рддрдирд╛ рд╣рдо рдЪрд╛рд╣реЗрдВрдЧреЗред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЙрд╕ рдХрд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП C ++ рдореЗрдВ рдХрд░рддрд╛ рд╣реИ:
- рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг
- рдЖрднрд╛рд╕реА рддрд░реАрдХреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
- "рдореЗрдердб" рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╣реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ (рд╡рд╣реА рдпрд╣)
рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореИрдВ рдЗрд╕рд╕реЗ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдпрд╣ рдЖрднрд╛рд╕реАрддрд╛ рдХрд╣рд╛рдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рднрд┐рдиреНрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╡реЗрдХреНрдЯрд░ рдореЗрдВ, рд▓реЗрдХрд┐рди рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред рдпрд╛ рдХреБрдЫред
рдпрд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдореЗрдВ, рдЬрдм рдЖрдк рд╣реИрд╢ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЖрдо рддреМрд░ рдкрд░ рджреЛ рддрд░реАрдХреЗ рд╣реЛрддреЗ рд╣реИрдВ: рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рд╕реЗ рдПрдХ рд╣реИрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдареАрдХ рд╣реИ, рдмрд╕ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ ("ред" рдСрдкрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рджреЗрдЦреЗрдВ, рдЬреЛ рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдФрд░ рдПрдХ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде ("рддрд░реАрдХреЗ") рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдореБрдЭреЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рд╣рд┐рддреНрдп
- ANSI-C ( xana4ok ) рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
- рд╕реБрдВрджрд░ рдХреЛрдб (рдЕрдЧреНрд░рдгреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреИрд╕рд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ), рдЕрдзреНрдпрд╛рдп 16, рдж рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдореЙрдбрд▓: рдЧреНрд░реЗрдЧ рдХреНрд░реЛрд╣-рд╣рд╛рд░реНрдЯрдореИрди ( рдмреБрд░реНрдЬрдИ ) рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдн