рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╢рд╛рд╕реНрддреНрд░реАрдп рдкрд┐рдВрдкрд▓ рдореБрд╣рд╛рд╡рд░реЗ (рд╕реВрдЪрдХ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд╕реВрдЪрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореБрд╣рд╛рд╡рд░реЛрдВ рдХреЗ рдЖрдЧреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджреВрд╕рд░рд╛ рднрд╛рдЧ рдкрд┐рдВрдкрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЦрд╛рдорд┐рдпреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ред
рдореВрд▓ рдХреЗ рд▓рд┐рдВрдХ
рдпрд╣
Heise Developer рдХреЗ рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред рджреЛрдиреЛрдВ рднрд╛рдЧреЛрдВ рдХреЗ рдореВрд▓ рдпрд╣рд╛рдВ рд╣реИрдВ:
рднрд╛рдЧ 1 ,
рднрд╛рдЧ 2рдпрд╣ рдЕрдиреБрд╡рд╛рдж
рдпрд╣рд╛рдВ рд╕реЗ рдПрдХ рдЕрдВрдЧреНрд░реЗрдЬреА рдЕрдиреБрд╡рд╛рдж
рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЕрдореВрд░реНрдд
рдореБрд╣рд╛рд╡рд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рдирд╛рдо Pimpl рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рд╣рд╛рдЗрдЬ рдбреЗрд╡рд▓рдкрд░ рдЗрд╕ рд╣рд╛рдереЛрдВ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдХреБрдЫ рдкрд╣рд▓реБрдУрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рддрд╛ рд╣реИ рдЬреЛ рдХреНрд▓рд╛рд╕рд┐рдХ рддрдХрдиреАрдХ рд╕реЗ рдкрд░реЗ рд╣реИред
рдХреНрд▓рд╛рд╕рд┐рдХ рдореБрд╣рд╛рд╡рд░рд╛
рд╣рд░ C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЗрд╕ рддрд░рд╣ рдПрдХ рд╡рд░реНрдЧ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЖрдпрд╛ рд╣реЛрдЧрд╛:
class Class {
рдпрд╣рд╛рдВ, рдХреНрд▓рд╛рд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдбреЗрдЯрд╛ рдлреАрд▓реНрдбреНрд╕ рдХреЛ рдиреЗрд╕реНрдЯреЗрдб рдХреНрд▓рд╛рд╕
Class::Private
рдЯреНрд░рд╛рдВрд╕рдлрд░
Class
рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Class
рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓
Class::Private
рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ
d
рд╕реВрдЪрдХ рд╣реЛрдЧрд╛ред
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрдХреНрд╖рд╛ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЫрд┐рдкрд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛, рдЖрдкрдХреЛ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдФрд░ C ++ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрдИ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, C ++ рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА, C рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореЙрдбреНрдпреВрд▓ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ (рдпрд╣ рд╕рдорд░реНрдерди C ++ 0x рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдорд╛рдирдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ (рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдЙрдирдХрд╛ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ) рдХреЛ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐
#include
рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рджреЛрд╣рд░реА рднреВрдорд┐рдХрд╛ рджреЗрддрд╛ рд╣реИ: рдПрдХ рддрд░рдл, рд╡реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИрдВред рджреВрд╕рд░реА рдУрд░, рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд╕реНрдерд╛рди рдкрд░ред
рд╕реА рдореЗрдВ, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдиреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛: рдШреЛрд╖рдгрд╛ рдФрд░ рд╡рд┐рд╡рд░рдг рдХреЛ рдЕрд▓рдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рд╡рд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛; рдпрд╣ рдпрд╛ рддреЛ рд╕рдВрд░рдЪрдирд╛рдУрдВ
рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реЗ рдирд┐рдЬреА рд╣реЛрдВрдЧреЗ), рдпрд╛ рдЙрдиреНрд╣реЗрдВ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реАрдзреЗ рд╡рд░реНрдгрди рдХрд░реЗрдВ (рддрдм рд╡реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реЛрдВрдЧреЗ)ред "рдСрдмреНрдЬреЗрдХреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрдб рд╕реА" рдореЗрдВ, рдЙрдкрд░реЛрдХреНрдд
Class
рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
struct Class;
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ C ++ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХрдХреНрд╖рд╛ рдХреЗ рдЕрдВрджрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрдХреНрд╖рд╛рдПрдВ рдмреЗрдХрд╛рд░ рд╣реЛрдВрдЧреА, рдЗрд╕рд▓рд┐рдП рд╕реА ++ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рд╡рд░реНрдЧ рд╡рд┐рд╡рд░рдг рд╣реЛрддреЗ рд╣реИрдВред рдХреНрд▓рд╛рд╕ рдмреЙрдбреА рдХреЗ рдмрд╛рдж рд╕реЗ, рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рд╡рд┐рдкрд░реАрдд, рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рдШреЛрд╖рдгрд╛рдПрдВ (рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ) рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
class Class { public:
рд╕рдорд╕реНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдореЙрдбреНрдпреВрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓) рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдПрдХ рдмреБрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдгред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдХреНрд░реВрдб рдЯреНрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг (рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдФрд░ рдирд┐рдЬреА рддрд░реАрдХреЗ) рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдЪреВрдВрдХрд┐
Class::Private
рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреЗрд╡рд▓ рдкреЙрдЗрдВрдЯрд░ рд╡реИрд░рд┐рдПрдмрд▓ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд "рдХреЗрд╡рд▓ рдирд╛рдо рд╕реЗ" (рд▓реИрдХреЛрд╕), рдФрд░ "рдЖрдХрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░" рдирд╣реАрдВ, рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдШреЛрд╖рдгрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╢реБрджреНрдз рд╕реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИред
Class
рд╕рднреА рддрд░реАрдХреЗ рдЕрдм рдирд┐рдЬреА рддрд░реАрдХреЛрдВ рдФрд░
Class::Private
рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ
Class::Private
рд╡рд░реНрдЧ рдХреЗрд╡рд▓
d
рдорд╛рдзреНрдпрдо рд╕реЗ ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ C ++ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯреЗрдб рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реБрд╡рд┐рдзрд╛ рдорд┐рд▓рддреА рд╣реИред рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдЪрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг, рдХрд┐рд╕реА рдХреЛ рдореЗрдореЛрд░реА рдХреЗ рдУрд╡рд░рд╣реЗрдб рдЖрд╡рдВрдЯрди (
new Class::Private
) рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рд▓рд╛рдн рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдбреНрд╕ рдкрд░ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдкрд╣реБрдВрдЪ, рд╕рд╛рде рд╣реА
inline
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдПрдХ рдкреВрд░реНрдг рдЕрд╕реНрд╡реАрдХреГрддрд┐ (рдХрдо рд╕реЗ рдХрдо рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЦрдВрдб рдореЗрдВ)ред рдЬреИрд╕рд╛ рдХрд┐ рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдирд┐рд░рдВрддрд░ рддрд░реАрдХреЛрдВ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рднреА рдмрджрд▓рддреЗ рд╣реИрдВред
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдпрд╛, рдХрдо рд╕реЗ рдХрдо, рдЙрдкрд░реЛрдХреНрдд рдХрдорд┐рдпреЛрдВ рдХрд╛ рд╢рдорди, рд╣рдо рдЙрди рд▓рд╛рднреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╡рд┐рдЪрд╛рд░ рдХреЗ рддрд╣рдд рдореБрд╣рд╛рд╡рд░реЗ рдХрд╛ рдЖрд╡реЗрджрди рджреЗрддрд╛ рд╣реИред
рдкрд┐рдВрдкрд▓ рдореБрд╣рд╛рд╡рд░реЗ рдХреЗ рдлрд╛рдпрджреЗ
рдкрд┐рдореНрдкрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд╛рдн рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдПрдХ рдкрддрд▓реА рдФрд░ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕реНрдерд┐рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓) рдорд┐рд▓рддреА рд╣реИред рдкрд╣рд▓рд╛ рдПрдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдЧ рд╡рд░реНрдгрди рд╣реИ; рджреВрд╕рд░реЗ рдХреЗ рддрд╣рдд - рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рдж рднреА рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Qt 4 рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдХрдо рд╕реЗ рдХрдо рджреЛ рдмрд╛рд░ рдиреЛрдХрд┐рдпрд╛ рдХреЗ рдХреНрдпреВрдЯреА рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ (рдкреВрд░реНрд╡ рдореЗрдВ рдЯреНрд░реЛрд▓рдЯреЗрдХ) рдиреЗ рдХреНрдпреВрдЯреА 4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд░рд┐рд▓реЗрдХреНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдореЗрдВ рдЧрд╣рд░рд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рд╣реИред
Pimpl рдореБрд╣рд╛рд╡рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддреНрд╡рд░рдг рдХреЛ рдХрдо рдордд рд╕рдордЭреЛ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВред рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ
#include
рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдореА рдФрд░ Pimpl рд╡рд░реНрдЧреЛрдВ рдХреА рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡реГрддреНрддрд┐ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдХрдореА рдХреЗ рдХрд╛рд░рдг рдЕрд╕реЗрдВрдмрд▓реА рддреНрд╡рд░рд┐рдд рд╣реЛрддреА рд╣реИред рдкреБрд╕реНрддрдХ рдореЗрдВ "рд╕реА ++ рдореЗрдВ рдЬрдЯрд┐рд▓ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди" ("рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реА ++"), рд╣рд░реНрдм рд╕рдЯрд░ рдиреЗ рд╕рдВрдХрд▓рди рдЧрддрд┐ рдХреА рдирд┐рд░рдВрддрд░ рджреЛрд╣рд░реАрдХрд░рдг рдХреЛ рдиреЛрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЬреЙрди рд▓реИрдХреНрд╕ рдиреЗ рдпрд╣ рднреА рджрд╛рд╡рд╛ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкрд░рд┐рдорд╛рдг рдХреЗ рджреЛ рдЖрджреЗрд╢реЛрдВ рджреНрд╡рд╛рд░рд╛ рддреНрд╡рд░рд┐рдд рд╣реИред
Pimpl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдлрд╛рдпрджрд╛: рдбреА рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдПрдВ рд▓реЗрдирджреЗрди-рдЙрдиреНрдореБрдЦ рдФрд░ рдЕрдкрд╡рд╛рдж-рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдПрдХ рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рдирд▓ (рд╕рднреА рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ) рдХреЙрдкреА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдкреА-рд╕реНрд╡реИрдк рдореБрд╣рд╛рд╡рд░реЗ (Satter, Alexandrescu "C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реНрдЯреИрдВрдбрд░реНрдб", рдкреИрд░рд╛ 56) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
class Class {
C ++ 0x рдореЗрдВ рдЪрд╛рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреБрдЪреНрдЫ рд╣реИ (рдФрд░, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╕рднреА рдкрд┐рдореНрдкрд▓ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА):
рдЗрд╕ рдореЙрдбрд▓ рдореЗрдВ, рд╡рд┐рдирд┐рдордп рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рд╡рд░реНрдЧ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛,
inline
рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдкреНрд░рднрд╛рд╡реА рдЙрдкрдпреЛрдЧ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрдиреНрдирдд рд░рдЪрдирд╛ рд╡рд┐рдзрд┐рдпрд╛рдБ
рдкрд┐рдВрдкрд▓ рдХрд╛ рдЕрдВрддрд┐рдо рд▓рд╛рдн, рдЬреЛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдПрдХрддреНрд░реАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЧрддрд┐рд╢реАрд▓ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред Pimpl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛, рдПрдХрддреНрд░реАрдХрд░рдг рдЖрдорддреМрд░ рдкрд░ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП Pimpl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдкреВрд░реА рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдкрд┐рдВрдкрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХреЗрд╡рд▓ рдкреЙрдЗрдВрдЯрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЬрдЯрд┐рд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдХреНрдпреВрдЯреА рд╕рдВрд╡рд╛рдж рд╡рд░реНрдЧ
class QLineEdit; class QLabel; class MyDialog : public QDialog {
рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ
#include <QLabel> #include <QLineEdit> class MyDialog::Private { // ... // Qt, QLabel loginLB; QLineEdit loginLE; QLabel passwdLB; QLineEdit passwdLE; };
рдХреНрдпреВрдЯреА рдкрд╛рд░рдЦреА рдпрд╣ рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐
QDialog
рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рдВрд╢ рдХреЗ рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдкреНрд░рддреНрдпрдХреНрд╖ рдПрдХрддреНрд░реАрдХрд░рдг рдЙрдирдХреЗ рд╡рд┐рдирд╛рд╢ рдХрд╛ рджреЛрд╣рд░рд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред рджрд░рдЕрд╕рд▓, рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдореЗрдореЛрд░реА рдПрд▓реЛрдХреЗрд╢рди рд╕реАрдХреНрд╡реЗрдВрд╕ (рджреЛрд╣рд░реЗ рд╡рд┐рд▓реЛрдкрди, рдбреАрд▓рд▓реЗрд╢рди рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧ, рдЖрджрд┐) рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЦрддрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рднреА рд╡рд░реНрдЧ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ Qt рд╣рдореЗрд╢рд╛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╕рд╛рдордиреЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡реА рд╣реИ рдЬрдм рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХрддреНрд░рд┐рдд рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдЦреБрдж рдкрд┐рдореНрдкрд▓ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдпрд╣ рдЕрдВрддрд┐рдо рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдареАрдХ рдРрд╕рд╛ рд╣реА рд╣реИ, рдЬрд╣рд╛рдВ рдкрд┐рдВрдкрд▓ рдореБрд╣рд╛рд╡рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдХрд╛рд░
sizeof(void*)
рдЪрд╛рд░ рдЧрддрд┐рд╢реАрд▓ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд (рдмрдбрд╝рд╛) рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рд╣реИред рдпрд╣ рдвреЗрд░ рдХреЗ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдЙрдкрдпреЛрдЧ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЫреЛрдЯреА рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди рд▓рдЧрд╛рддрд╛рд░ рдЖрд╡рдВрдЯрди рдореЗрдВ рдмрдбрд╝реЗ рдУрд╡рд░рд╣реЗрдбреНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдкрд╛рд╕ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ "рднрдХреНрддрд┐рдкреВрд░реНрдг" рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХ рдореМрдХрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдпрд╣ рдбрдмрд▓ рдЗрдирдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЗрдирд╡реЙрд▓реНрдб рдлрдВрдХреНрд╢рди рд╡рд░реНрдЪреБрдЕрд▓рд┐рдЯреА рд╣реЛрддрд╛ рд╣реИред рдкреЙрдЗрдВрдЯрд░ рдПрдЧреНрд░реАрдЧреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдкреНрд░реЛрдбреЗрдХреНрдЯреЛрд░рд▓ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдХреЙрд▓ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдЦрд┐рд▓рд╛рдл рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рджреЗрдЧрд╛; рд╣рд╛рд▓рд╛рдВрдХрд┐, рдбреА-рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд╣рд╛рдВ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЧрддрд┐рд╢реАрд▓ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдПрдХ рдЕрдбрд╝рдЪрди рдореЗрдВ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ, рдореБрд╣рд╛рд╡рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ "рдлрд╛рд╕реНрдЯ рдкрд┐рдореНрдкрд▓" ("рд╕реА ++ рдореЗрдВ рдЬрдЯрд┐рд▓ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛", рдкреИрд░рд╛рдЧреНрд░рд╛рдл 30) рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдЕрд╡рддрд╛рд░ рдореЗрдВ, рд╡реИрд╢реНрд╡рд┐рдХ рдСрдкрд░реЗрдЯрд░
new()
рдмрдЬрд╛рдп
Private
рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рддреЗрдЬ рдЖрд╡рдВрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
boost::singleton_pool
ред
рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖
рдкрд┐рдореНрдкрд▓ рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз C ++ рдореБрд╣рд╛рд╡рд░рд╛ рд╣реИ рдЬреЛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЙрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЙрд╕ рд╕реАрдорд╛ рддрдХ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ C ++ рд╕реАрдзреЗ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдбреА-рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рддреЗрдЬреА рд╕реЗ рд╕рдВрдХрд▓рди, рд▓реЗрдирджреЗрди рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХрд╛ рдЖрд╕рд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрдирдд рд░рдЪрдирд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд╕рдВрднрд╡рддрдГ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИред
рд▓реЗрдХрд┐рди рдбреА-рдкреЙрдЗрдВрдЯрд░реНрд╕ рдореЗрдВ рднреА рдЕрдкрдиреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ: рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд
Private
рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди, рдирд┐рд░рдВрддрд░ рддрд░реАрдХреЛрдВ рдХреЗ рдмрджрд▓рддреЗ рдЕрд░реНрде, рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдВ рднреА рдЪрд┐рдВрддрд╛ рдХрд╛ рдХрд╛рд░рдг рд╣реИрдВред
рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рд▓реЗрдЦрдХ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рджрд┐рдЦрд╛рдПрдЧрд╛ред
рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рднреА рдмрдврд╝ рдЬрд╛рдПрдЧреА, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореБрд╣рд╛рд╡рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдлрд╛рдпрджреЗ рдЗрд╕рдХреЗ рдиреБрдХрд╕рд╛рди рд╣реИрдВред рд╕рдВрджреЗрд╣ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рдЬрд╛рдБрдЪ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджрд┐рдЧреНрдз рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рджреВрд╕рд░рд╛ (рдФрд░ рдЕрдВрддрд┐рдо) рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдкрд┐рдВрдкрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдПрдЧрд╛, рд╕рдорд╕реНрдпрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рдХрдИ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдореБрд╣рд╛рд╡рд░реЗ рдХреЛ рдкреВрд░рдХ рдХрд░реЗрдЧрд╛ред
рдПрдХ рдЧреАрдХ рдкрддреНрд░рд┐рдХрд╛ рдкрд░ рдкрд┐рдореНрдкрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреНрдп рд▓реЗрдЦ
рдореБрд╣рд╛рд╡рд░реЗ рдкрд┐рдореНрдкрд▓ рдФрд░ рдлрд╛рд╕реНрдЯ рдкрд┐рдореНрдкрд▓ - рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХQt рдХрд╛ Pimpl рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИ!Qt Pimpl рдкреИрдЯрд░реНрди рдореЗрдВ рдирд┐рдЬреА рд╕реНрд▓реЙрдЯ