рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдПрдХ рдХрд╖реНрдЯрдкреНрд░рдж рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реЗрдХ рдкрд░ рдХрджрдо рд░рдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдпрджрд┐ рдЖрдк рдХреБрдЫ рд╕рдордп рд╕реЗ C ++ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рдХреБрдЫ рдирдпрд╛ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдореЗрдВ рджреА рдЧрдИ рд╕рд╛рдордЧреНрд░реА рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдЧреАред рдпрджрд┐ рдореБрдЭреЗ рдпрд╣ рдкрд╛рдВрдЪ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдкрддрд╛ рдерд╛, рддреЛ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬреАрд╡рди рдФрд░ рддрдВрддреНрд░рд┐рдХрд╛ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдХреБрдЫ рдЕрдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЦреЛрдП рд╣реБрдП рджрд┐рдиреЛрдВ рдХреЛ рдмрдЪрд╛рдПрдЧрд╛ред
рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реВрдВрдЧрд╛ред рдореБрдЭреЗ рддреБрд░рдВрдд рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬрд╝реЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдореИрдВ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рднрд╛рд╖рд╛ рдХрд╛ рдорд┐рд╕рдХреЙрд▓рдХреНрдпреВрд╢рди рдирд╣реАрдВ рдорд╛рдирддрд╛ред рдпрджрд┐ рдЖрдк рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рдХрдИ рдорд╛рдпрдиреЛрдВ рдореЗрдВ, рдЕрд░реНрде рдФрд░ рддрд░реНрдХ рдкреНрд░рдХрдЯ рд╣реЛрддреЗ рд╣реИрдВред рдпреЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╡рд╛рд▓реЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рд╕рд┐рд░ рдХреБрдЫ рдФрд░ рдХреЗ рд╕рд╛рде рднрд░рд╛ рд╣реБрдЖ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рд╣реИрдВ "рдареАрдХ рд╣реИ, рдЗрд╕ рд╕рдВрдХрд▓рдХ рдХреА рдХреНрдпрд╛ рдЬрд░реВрд░рдд рд╣реИ, рдмрд╕ рдПрдХ рд╣реА рдХрд╛рдо рдХрд┐рдпрд╛!"
рдФрд░ рдПрдХ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБред рдпрд╣ "рдЬреИрд╕реЗ рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдПрдХ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдбрд╛рд▓ рджрд┐рдпрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐" рдХреЗ рдмрд╛рдж рдЪреМрдХрд╕ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдиреЗ рднреА рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ред " рд╕рдорд╕реНрдпрд╛рдПрдВ рдЯрд╛рдЗрдкреЛрд╕ рдирд╣реАрдВ рд╣реИрдВред рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдореИрдВрдиреЗ рдХреЛрдб рдХреЛ рд╡рд░реНрдгрд┐рдд рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рдЫреЛрдбрд╝рд╛ рддрд╛рдХрд┐ рд▓реЗрдЦ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╢рд░реНрддред
рдХреБрдЫ рдХреЛрдб рджрд┐рдПред рдХрднреА-рдХрднреА рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рд╡рд╣ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛, рдпрджрд┐ рд╕рдВрдХрд▓рди рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрд┐рд╕ рдХрд╛рд░рдг рд╕реЗред
рд╕рдорд╕реНрдпрд╛ 1. 0 рд╕реЗ рднрд╛рдЧ рджреЗрдВ
рдХреЛрдб рд╕реВрдЪреА 1.1:
int g = 3; g -= 3; int f = 1 / g; std::cout << "f is " << f << std::endl;
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1.2:
float g = 3; g -= 3; float f = 1 / g; std::cout << "f is " << f << std::endl;
рдЬрд╡рд╛рдм рд╣реИрд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1.1 рдХрд╛рд░реНрдпрдХреНрд░рдо рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛ред рд╢реВрдиреНрдп рд╕реЗ рднрд╛рдЧ рджреЗрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдк рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1.2 рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдирд┐рд╖реНрдХрд░реНрд╖ "рдПрдл inf рд╣реИ"ред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдлреНрд▓реЛрдЯ рдПрдХ рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЕрд╕реАрдоред рдФрд░ рддреБрдо рдЕрдирдВрдд рдореЗрдВ рдмрд╛рдВрдЯ рд╕рдХрддреЗ рд╣реЛред рдЗрд╕реЗ рдпрд╛рдж рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╣ рдЖрд╢рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрджрд┐ рд╢реВрдиреНрдп рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рддреБрд░рдВрдд рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ред
рдХрд╛рд░реНрдп 2. рд╕реНрд╡рд┐рдЪ рдФрд░ рдХреНрд▓рд╛рд╕
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2
class SwitchClass { public: static const int ONE; static const int TWO; void switchFun(int number) { switch(number) { case ONE: std::cout<<"1"<<std::endl; break; case TWO: std::cout<<"2"<<std::endl; break; } } }; const int SwitchClass::ONE = 1; const int SwitchClass::TWO = 2; int main() { SwitchClass object; object.switchFun(SwitchClass::ONE); return 0; }
рдЬрд╡рд╛рдм рд╣реИрд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВред рд╕реНрдереИрддрд┐рдХ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдп рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ " рд╕реНрдереИрддрд┐рдХ рдХреЙрдиреНрд╕реНрдЯреЗрдВрд╕ рдЗрдВрдЯ " рдХреЗ рдмрдЬрд╛рдп рдПрдирдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХреА рдЧрдИ рд╣реИ
рдХрд╛рд░реНрдп 3. рддрд╛рд░реНрдХрд┐рдХ рднрд╛рд╡
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 3
bool update1() { std::cout<<"update1"<<std::endl; ...
рдЬрд╡рд╛рдм рд╣реИрд╕реНрдХреНрд░реАрди рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд┐рд╕ рд╡реИрд▓реНрдпреВ рдЕрдкрдбреЗрдЯ 1 рд░рд┐рдЯрд░реНрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ред рд╕реА ++ рдореЗрдВ, рддрд╛рд░реНрдХрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рдХрд┐рд╕реА рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рдгрд╛рдо рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдЖрдЧреЗ рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рддрд╛рд░реНрдХрд┐рдХ I рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЗрд╕рдХрд╛ рдПрдХ рдСрдкрд░реЗрд╢рдВрд╕ FALSE рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рднреА FALSE рд╣реЛрдЧрд╛, рджреВрд╕рд░реЗ рдСрдкрд░реЗрдВрдб рдХреЗ рдореВрд▓реНрдп рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рдЕрдкрдбреЗрдЯ 1 рдПрдлрдПрдПрд▓рдПрд╕рдИ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдкрдбреЗрдЯ 2 рднреА рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╕реНрдХреНрд░реАрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛
update1
рдпрджрд┐ рдЕрдкрдбреЗрдЯ 1 рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо TRUE рд╣реИ, рддреЛ рдЕрдкрдбреЗрдЯ 2 рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧрд╛
update1 update2
рдиреИрддрд┐рдХрддрд╛ ред рддрд╛рд░реНрдХрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХреБрдЫ рдкрдХреНрд╖ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВред рдкрд░рд┐рдгрд╛рдо рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реВрдЪреА 3 рдХреЗ рдХреЛрдб рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛
bool update1Result = update1(); bool update2Result = update2(); bool updatedSuccessfully = update1Result && update2Result ;
рдХрд╛рд░реНрдп 4. рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ Iterator
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 4.1 рд╕рдорд╛рд░реЛрд╣ рдХреА рдШреЛрд╖рдгрд╛
typedef std::vector<int> MyVector; void processIterator(MyVector::iterator& i) { std::cout<<*i<<std::endl; }
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 4.2
MyVector v; v.push_back(1); for (MyVector::iterator i = v.begin(); i != v.end(); ++i) { processIterator(i); }
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 4.3
MyVector v; v.push_back(1); processIterator(v.begin());
рдЬрд╡рд╛рдм рд╣реИрд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 4.2 рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╕реНрдХреНрд░реАрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛
1
рд╕реВрдЪреАрдХрд░рдг 4.3 рдкрд░рд┐рдгрд╛рдо рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдореЗрдВ рд╣реЛрдЧрд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╢реБрд░реВ рдПрдХ рдирд┐рд░рдВрддрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╕реВрдЪреА 4.2 рдореЗрдВ рдмрд╕ i рдХреЛ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реВрдк рд╡реЗрд░рд┐рдПрдмрд▓ I рдЕрдм рдПрдХ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред 4.3 рдореЗрдВ, рд╣рдо рдорд╛рди рд╕реЗ рд╕реНрдерд┐рд░ рдХреНрд╡рд╛рд▓рд┐рдлрд╛рдпрд░ рдХрд╛ "рдЪрдпрди" рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рд╕рднреА рдХреЙрд▓ рд╡рд┐рдХрд▓реНрдк рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
void processIterator(const MyVector::iterator& i) { std::cout<<*i<<endl; }
рдХрд╛рд░реНрдп 5. рдПрдХ рд╕реВрдЪрдХ рдкрд░ рдПрдХ рд╡рд╕реНрддреБ рд╡рд┐рдзрд┐ рдХреЙрд▓рд┐рдВрдЧ
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 5
class Test { public: void testFun() { std::cout<<"testFun"<<std::endl; } private: int mValue; }; int main() { Test *t, *t1 = NULL; t->testFun(); t1->testFun(); return 0; }
рдЬрд╡рд╛рдм рд╣реИрдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ (рдЕрд╢рдХреНрдд рдФрд░ рдЕрд╕рдВрдмрджреНрдз рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛), рдФрд░ рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ
testFun testFun
рдФрд░ рдХрд╛рд░рдг рд╕рд░рд▓ рд╣реИ: рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИ,
рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред рдЕрдЧрд░ рд╡рд┐рдзрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧреА
void testFun() { std::cout<<"testFun"<<std::endl; mValue = 0; }
рддрдм, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖ред рдпрд╣ рди рд╕рдордЭреЗрдВ рдХрд┐ рдПрдХ рдЧреИрд░-рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐ рдХреЛ рдПрдХ рдЕрд╕рд┐рдВрдЪрд┐рдд рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ "рдПрдХ рд╡рд┐рдзрд┐ рдХреНрдпреЛрдВ рдмрдирд╛рдПрдВ рдЬреЛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рдЧреИрд░-рд╕реНрдерд┐рд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред" рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рд╣реЛрдЧрд╛: тАЬрдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗред рдЬреАрд╡рди рдореЗрдВ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред тАЭ
рдЯрд╛рд╕реНрдХ 6: рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рдирд╛
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 6.1 рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрдХреНрд╖рд╛рдПрдВ
class TestVirtuals { public: virtual void fun(int i) { std::cout<<"int"<<std::endl; } virtual void fun(float f) { std::cout<<"float"<<std::endl; } void fun(std::string s) { std::cout<<"string"<<std::endl; } }; class TestVirtualsChild : public TestVirtuals { public: virtual void fun(int i) { std::cout<<"int child"<<std::endl; } };
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 6.2
TestVirtuals tv; tv.fun(1); tv.fun(1.f); tv.fun(std::string("one"));
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 6.3
TestVirtualsChild tvc; tvc.fun(1); tvc.fun(1.f);
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 6.4
TestVirtualsChild tvc; tvc.fun(std::string("one"));
рдЬрд╡рд╛рдм рд╣реИ6.2 рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреЛ
рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрддреНрдкрд╛рджрди
int float string
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 6.3 рдмрдЪреНрдЪреЗ рдХреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдЕрдзрд┐рднрд╛рд░ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рдордЬрд╝реЗрджрд╛рд░ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЙрд▓ рдкреВрд░реНрдгрд╛рдВрдХ рд╕рдВрд╕реНрдХрд░рдг (рдЬреЛ рдХрд┐ рд╡рдВрд╢рдЬ рдореЗрдВ рд╣реИ) рдореЗрдВ рдбрд╛рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрддреНрдкрд╛рджрди
int child int child
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 6.4 рд╕рдВрдХрд▓рди рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рдЧреИрд░-рдЖрднрд╛рд╕реА рдлрд╝рдВрдХреНрд╢рди рд╡рдВрд╢рдЬ рдореЗрдВ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдореВрд▓ рд╡рд░реНрдЧ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
tvc.TestVirtuals::fun(std::string("one"));
рдирд┐рд╖реНрдХрд░реНрд╖ред рдУрд╡рд░рд▓реЛрдб рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рджреВрд░ рд░рд╣рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЕрдиреНрдп рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдЫрдд рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред