{"id":285537,"date":"2017-04-26T12:32:18","date_gmt":"2017-04-26T08:32:18","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=285537"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=285537","title":{"rendered":"\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043e\u0432\u0435\u0440\u0445\u0435\u0434"},"content":{"rendered":"<p>\u042f \u0434\u0443\u043c\u0430\u044e, \u0432\u0441\u0435 \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e \u043d\u0451\u043c. \u0427\u0430\u0441\u0442\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0434\u0438 \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043b\u0438 \u043c\u044b \u043e \u0442\u043e\u0439 \u0446\u0435\u043d\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0437\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c? \u041f\u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443: \u043a\u0430\u0436\u0434\u044b\u0439 \u043b\u0438 \u0437\u043d\u0430\u0435\u0442 \u044d\u0442\u0443 \u0446\u0435\u043d\u0443? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/f24\/a8b\/649\/f24a8b64943f48b19411547445f39aad.png\" width=\"800\"\/><\/div>\n<p>  <a name=\"habracut\"><\/a><br \/>  \u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"objectivec\">class Base {     int variable; };  class Child: public Base {  };<\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0437\u043d\u0430\u0435\u043c, \u043a\u043b\u0430\u0441\u0441 \u0421hild \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u0441\u0435 \u0447\u043b\u0435\u043d\u044b \u043a\u043b\u0430\u0441\u0441\u0430 Base. \u0422.\u0435. \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0441\u0435\u0439\u0447\u0430\u0441 \u0443 \u043d\u0430\u0441 sizeof(Base) = sizeof(Child) \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 4 (\u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 sizeof(int) = 4).<\/p>\n<p>  \u041d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043a\u043b\u0430\u0441\u0441\u0430:<\/p>\n<pre><code class=\"objectivec\">class A1 {     int iv;     double dv;     int iv2; };  class A2 {     double dv;     int iv;     int iv2; };<\/code><\/pre>\n<p>  \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u043e\u043d\u0438 \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043d\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b: sizeof(A2) = 16, sizeof(A1) = 24. <\/p>\n<p>  \u0412\u0441\u0451 \u0434\u0435\u043b\u043e \u0432 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0441\u0430. \u0415\u0441\u043b\u0438 \u043e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0439 \u0442\u0438\u043f, \u0442\u043e \u0438\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 sizeof(double = 8), \u0442.\u0435 8 + 4 + 4 = 16, \u043d\u043e \u043a\u043b\u0430\u0441\u0441 A1 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440. \u0410 \u0432\u0441\u0451 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/1c7\/6b6\/7c3\/1c76b67c35ca4031bebdf0ec1f6e6f6f.png\"\/><\/div>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043b\u0438\u0448\u043d\u0438\u0435 8 \u0431\u0430\u0439\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e double \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u0430\u044f:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/39c\/323\/965\/39c323965b824e1680e3bea49be12f22.png\"\/><\/div>\n<p>  \u041d\u043e, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u044b \u0438 \u0442\u0430\u043a \u044d\u0442\u043e \u0437\u043d\u0430\u043b\u0438. <\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u043a\u0430\u043a \u043c\u044b \u0440\u0430\u0441\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0437\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u043a\u043b\u0430\u0441\u0441\u0435. \u0412\u044b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0421++ \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0435\u0434\u0438\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0412\u0441\u0451 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f. <\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u043f\u0438\u0448\u0435\u043c \u043e\u0434\u043d\u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a\u043b\u0430\u0441\u0441\u0443 Base \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u044b:<\/p>\n<pre><code class=\"objectivec\">class Base {     int variable;     virtual void f() {} };  class Child: public Base {  };<\/code><\/pre>\n<p>  \u0420\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0430\u043b \u0440\u0430\u0432\u043d\u044b\u043c 16. 8 \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f 4 \u2014 int \u043f\u043b\u044e\u0441 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435. \u0412 32-\u0445 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d 8. 4 \u2014 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c + 4 int \u0431\u0435\u0437 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0432\u0430\u043c \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430 \u0441\u043b\u043e\u0432\u043e, \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b Hopper Disassembler v4:<\/p>\n<p>  \/\/\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434  <\/p>\n<pre><code class=\"objectivec\">class Base {     public:     int variable;     virtual void f() {}     Base(): variable(10) {} };  \/\/\u0432 main Base a;<\/code><\/pre>\n<p>  \u0410\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"objectivec\"> ; Variables:         ;    var_8: -8                        __ZN4BaseC2Ev:        \/\/ Base::Base() 0000000100000f70         push       rbp                                      ; CODE XREF=__ZN4BaseC1Ev+16 0000000100000f71         mov        rbp, rsp 0000000100000f74         mov        rax, qword [0x100001000] 0000000100000f7b         add        rax, 0x10 0000000100000f7f         mov        qword [rbp+var_8], rdi 0000000100000f83         mov        rdi, qword [rbp+var_8] 0000000100000f87         mov        qword [rdi], rax 0000000100000f8a         mov        dword [rdi+8], 0xa 0000000100000f91         pop        rbp 0000000100000f92         ret<\/code><\/pre>\n<p>  \u0411\u0435\u0437 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"objectivec\"> ; Variables:         ;    var_8: -8                        __ZN4BaseC2Ev:        \/\/ Base::Base() 0000000100000fa0         push       rbp                                     ; CODE XREF=__ZN4BaseC1Ev+16 0000000100000fa1         mov        rbp, rsp 0000000100000fa4         mov        qword [rbp+var_8], rdi 0000000100000fa8         mov        rdi, qword [rbp+var_8] 0000000100000fac         mov        dword [rdi], 0xa 0000000100000fb2         pop        rbp 0000000100000fb3         ret<\/code><\/pre>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043d\u0430 8 \u0431\u0430\u0439\u0442.<\/p>\n<p>  \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u043b\u044e\u0431\u0438\u0442 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u044b\u0432\u0435\u0434\u0435\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<pre><code class=\"objectivec\">#include &lt;iostream&gt; #include &lt;iomanip&gt;  using namespace std;  const int memorysize = 16;  class Base {     public:     int variable;     \/\/virtual void f() {}     Base(): variable(0xAAAAAAAA) {} \/\/\u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0432\u0438\u0434\u043d\u043e \u0437\u0430\u043d\u044f\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 };  class Child: public Base {  };  void PrintMemory(const unsigned char memory[]) {      for (size_t i = 0; i &lt; memorysize \/ 8; ++i)    {     for (size_t j = 0; j &lt; 8; ++j)     {       cout &lt;&lt; setw(2) &lt;&lt; setfill('0') &lt;&lt; uppercase &lt;&lt; hex            &lt;&lt; (int)(memory[i * 8 + j]) &lt;&lt; &quot; &quot;;     }     cout &lt;&lt; endl;   } }  int main() {        unsigned char memory[memorysize];    memset(memory, 0xFF, memorysize * sizeof(unsigned char)); \/\/\u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c \u043c\u0443\u0441\u043e\u0440\u043e\u043c FF    new (memory) Base; \/\/\u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 memory    PrintMemory(memory);    reinterpret_cast&lt;Base *&gt;(memory)-&gt;~Base();        return 0; }<\/code><\/pre>\n<p>  \u0412\u044b\u0432\u043e\u0434:<\/p>\n<pre><code class=\"objectivec\">AA  AA  AA  AA  FF  FF  FF  FF  FF   FF   FF   FF   FF  FF  FF  FF<\/code><\/pre>\n<p>  \u0420\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u043f\u043e\u043b\u044e\u0431\u0443\u0435\u043c\u0441\u044f \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<pre><code class=\"objectivec\">E0   30    70   01   01   00  00  00  AA  AA  AA  AA  FF  FF  FF  FF <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u044d\u0442\u043e \u0432\u0441\u0451 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b\u0438, \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438. \u041d\u0438 \u0434\u043b\u044f \u043a\u043e\u0433\u043e \u043d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442, \u0447\u0442\u043e \u0432 \u0421++ \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435. \u042d\u0442\u043e \u043c\u043e\u0449\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c \u043d\u0435\u0443\u043c\u0435\u043b\u044b\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043d\u0438 \u043a \u0447\u0435\u043c\u0443 \u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443. \u041d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043e \u0433\u0440\u0443\u0441\u0442\u043d\u043e\u043c. \u0421\u0430\u043c\u0430\u044f \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u0440\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u043e\u043c\u0431\u0430. <\/p>\n<pre><code class=\"objectivec\">class A; class B: public A; class C: public A; class D: public B, public C;<\/code><\/pre>\n<p>  \u0412 \u043a\u043b\u0430\u0441\u0441\u0435 D \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0447\u043b\u0435\u043d\u044b \u043a\u043b\u0430\u0441\u0441\u0430 \u0410. \u0427\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u043f\u043b\u043e\u0445\u043e\u0433\u043e? \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043d\u0435 \u0431\u0440\u0430\u0442\u044c \u0432 \u0440\u0430\u0441\u0447\u0435\u0442, \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u0441\u044f \u043d\u0430 \u043b\u0438\u0448\u043d\u0438\u0435 n \u0431\u0430\u0439\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 \u0410, \u043f\u043b\u043e\u0445\u043e \u0442\u043e, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043a\u043b\u0430\u0441\u0441\u0430 \u0410 \u2014 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c: B::A::func \u0438\u043b\u0438 C::A::func. \u041c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u043c \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u044f\u0432\u043d\u044b\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e. \u0412\u043e\u0442 \u0437\u0434\u0435\u0441\u044c-\u0442\u043e \u0432 \u0438\u0433\u0440\u0443 \u0438 \u0432\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 \u0410, \u043c\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u0441\u044f \u043e\u0442 \u043d\u0435\u0433\u043e:<\/p>\n<pre><code class=\"objectivec\">class A; class B: public virtual A; class C: public virtual A; class D: public B, public C;<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e. \u0418\u043b\u0438 \u043d\u0435\u0442? \u041a\u0430\u043a\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0443 \u043a\u043b\u0430\u0441\u0441\u0430 D, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u0410 \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434?<\/p>\n<pre><code class=\"objectivec\">cout &lt;&lt; sizeof(A) &lt;&lt; &quot; &quot; &lt;&lt; sizeof(B) &lt;&lt; &quot; &quot;          &lt;&lt; sizeof(C) &lt;&lt; &quot; &quot; &lt;&lt; sizeof(D) &lt;&lt; endl; <\/code><\/pre>\n<p>  \u042d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u043f\u043e\u0442\u043e\u043c\u0443 \u0442\u0443\u0442 \u0432\u0441\u0451 \u0447\u0442\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Visual Studio 2015 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0434\u0430\u0441\u0442: 4 8 8 12. <\/p>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u0438\u043c\u0435\u0435\u043c 4 \u0431\u0430\u0439\u0442\u0430 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u0410 (\u0434\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043d\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u044d\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, vtbA), \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e 4 \u0431\u0430\u0439\u0442\u0430 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0438\u0437-\u0437\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0430 B \u0438 \u0421 (vtbB \u0438 vtbC). \u041d\u0430\u043a\u043e\u043d\u0435\u0446 \u0432 D: 8 + 8 \u2014 4, \u0442\u0430\u043a \u043a\u0430\u043a vtbA \u043d\u0435 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0432\u044b\u0445\u043e\u0434\u0438\u0442 12.<\/p>\n<p>  \u0410 \u0432\u043e\u0442 gcc 4.2.1 \u0432\u044b\u0434\u0430\u0441\u0442 8 8 8 16. <\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043b\u0443\u0447\u0430\u0439 \u0431\u0435\u0437 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0438\u043c \u0436\u0435.<\/p>\n<p>  8 \u0431\u0430\u0439\u0442 \u043d\u0430 vtbA, \u0432 \u043a\u043b\u0430\u0441\u0441\u0430\u0445 B \u0438 \u0421 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u044d\u0442\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u044b \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043d\u043e \u0437\u0430\u0442\u043e \u043d\u0435 \u043d\u0430\u0434\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c vtbA \u0432 \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430\u0445. \u0412 \u043a\u043b\u0430\u0441\u0441\u0435 D \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0434\u0432\u0430 \u0430\u0434\u0440\u0435\u0441\u0430: \u0434\u043b\u044f vtbB \u0438 vtbC.<\/p>\n<pre><code class=\"objectivec\">0000000100000f7f         mov        rax, qword [0x100001018] 0000000100000f86         mov        rdi, rax 0000000100000f89         add        rdi, 0x28 0000000100000f8d         add        rax, 0x10 0000000100000f91         mov        rcx, qword [rbp+var_10] 0000000100000f95         mov        qword [rcx], rax 0000000100000f98         mov        qword [rcx+8], rdi 0000000100000f9c         add        rsp, 0x10  \u2026 0000000100001018         dq         0x00000001000010a8                          \u2026                       __ZTV1D:        \/\/ vtable for D 00000001000010a8         db  0x00 ; '.'                                         ; DATA XREF=0x100001018 ... 00000001000010b0         dq         __ZTI1D 00000001000010b8         db  0xc0 ; '.' ... 00000001000010c8         dq         __ZTI1D 00000001000010d0         db  0xc0 ; '.' \u2026 <\/code><\/pre>\n<p>  \u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e? \u0421\u043c\u043e\u0442\u0440\u0438\u0442\u0435: \u043c\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0434\u0432\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 0f95 \u0438 0f98. \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u043d\u0438 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0442\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430, \u0447\u0442\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 1018, \u043f\u043b\u044e\u0441 0x28 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438 0x10 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c. \u0418\u0442\u043e\u0433\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c 10b0 \u0438 10d0.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435.<\/p>\n<p>  \u0412 \u043f\u043b\u0430\u043d\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043c\u0430\u043b\u043e \u0447\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0443 \u043d\u0430\u0441 \u0442\u0430\u043a\u0436\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0434\u0432\u0430 \u0430\u0434\u0440\u0435\u0441\u0430, \u043d\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043b\u044f B, C \u0438 D \u0441\u0442\u0430\u043b\u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0430 D \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u0430\u0441\u044c \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0432 7 \u0440\u0430\u0437!<\/p>\n<p>  \u0421\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043b\u0438 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0442\u0430\u0431\u043b\u0438\u0446. \u0410 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0432\u0441\u044e\u0434\u0443, \u043a\u0430\u043a \u0441\u043e\u0432\u0435\u0442\u0443\u044e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0432\u0442\u043e\u0440\u044b?<br \/>  \u041d\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043c \u0443\u0436\u0435 \u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a, \u043d\u043e \u0433\u0434\u0435-\u0442\u043e \u0447\u0438\u0442\u0430\u043b\u0438, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043c\u044b\u0441\u043b\u044c \u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u0434\u0430\u0431\u044b \u0443\u0431\u0435\u0440\u0435\u0447\u044c\u0441\u044f \u043e\u0442 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. <\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u0435\u0442\u0443 \u0432 \u043b\u043e\u0431:<\/p>\n<pre><code class=\"objectivec\">class A; class B: public virtual A; class C: public virtual A; class D: public virtual B, public virtual C;<\/code><\/pre>\n<p>  \u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440 D?<\/p>\n<p>  Visual Studio 2015 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 4 8 8 16, \u0442. \u0435. \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0441\u044f \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 D. \u041f\u0443\u0442\u0451\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043e\u0442 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u0442\u043e \u0441\u0442\u0443\u0434\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0441. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0431\u044b \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"objectivec\">class D: public virtual B, public C;<\/code><\/pre>\n<p>  \u0438\u043b\u0438 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"objectivec\">class D: public B, public virtual C;<\/code><\/pre>\n<p>  \u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0431\u044b 12 \u0431\u0430\u0439\u0442.<\/p>\n<p>  \u041d\u0435 \u043f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435, \u0447\u0442\u043e \u0441\u0442\u0443\u0434\u0438\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043f\u0430\u043c\u044f\u0442\u044c, \u044d\u0442\u043e \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u0442\u0430\u043a. \u0414\u043b\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0440\u0430\u0437\u043c\u0435\u0440 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f 4 \u0431\u0430\u0439\u0442\u0430, \u0430 \u043d\u0435 8, \u043a\u0430\u043a \u0432 gcc. \u0422\u0430\u043a \u0447\u0442\u043e \u0443\u043c\u043d\u043e\u0436\u0430\u0439\u0442\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 2.<\/p>\n<p>  \u0410 \u0447\u0442\u043e gcc 4.2.1? \u041e\u043d \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0432\u044b\u0432\u043e\u0434 \u0432\u0441\u0435 \u0442\u043e\u0442 \u0436\u0435 \u2014 8 8 8 16. \u041d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435, \u0447\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0434\u043b\u044f D?!<\/p>\n<p>  \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043e\u043d\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u0430\u0441\u044c, \u043d\u043e \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0414\u0440\u0443\u0433\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u0441\u0451 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438.<\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0447\u0438\u0441\u0442\u043e\u0433\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 (\u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0434\u0443\u043c\u0430\u0442\u044c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u043b\u044c\u0437\u0430) \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441 \u0442\u0430\u043a\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0435\u0439:<\/p>\n<pre><code class=\"objectivec\">class A {     virtual void func() {}  };  class B: public virtual A {  };  class C: public virtual A {  };  class D: public virtual B, public virtual C {  };  class E: public virtual B, public virtual C, public virtual D {  }; <\/code><\/pre>\n<p>  \u0412 \u0441\u0442\u0443\u0434\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 E \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0435\u0442 \u043d\u0430 4, \u044d\u0442\u043e \u043c\u044b \u0443\u0436\u0435 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u0430 \u0432 gcc \u0440\u0430\u0437\u043c\u0435\u0440 D \u0438 E \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 16 \u0431\u0430\u0439\u0442.<\/p>\n<p>  \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0430 E (\u0430 \u043e\u043d\u0430 \u0438 \u0442\u0430\u043a \u043d\u0435\u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f, \u0435\u0441\u043b\u0438 \u0443\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435) \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0451\u0442 \u0432 4 \u0440\u0430\u0437\u0430! \u0415\u0441\u043b\u0438 \u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0432\u0441\u0451 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b, \u0442\u043e \u043e\u043d \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0435\u0442 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u0430 \u0438\u043b\u0438 \u043e\u043a\u043e\u043b\u043e \u0442\u043e\u0433\u043e. <\/p>\n<p>  \u041a\u0430\u043a\u043e\u0439 \u0436\u0435 \u0432\u044b\u0432\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c? \u0422\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0438 \u0440\u0430\u043d\u044c\u0448\u0435: \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u043e\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e, \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u043f\u0430\u043d\u0430\u0446\u0435\u044f \u0438, \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u043c\u044b \u0437\u0430 \u043d\u0435\u0433\u043e \u0440\u0430\u0441\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u0441\u044f. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043e\u043e\u0431\u0449\u0435.<br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/327052\/\"> https:\/\/habrahabr.ru\/post\/327052\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u042f \u0434\u0443\u043c\u0430\u044e, \u0432\u0441\u0435 \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e \u043d\u0451\u043c. \u0427\u0430\u0441\u0442\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0434\u0438 \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043b\u0438 \u043c\u044b \u043e \u0442\u043e\u0439 \u0446\u0435\u043d\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0437\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c? \u041f\u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443: \u043a\u0430\u0436\u0434\u044b\u0439 \u043b\u0438 \u0437\u043d\u0430\u0435\u0442 \u044d\u0442\u0443 \u0446\u0435\u043d\u0443? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/f24\/a8b\/649\/f24a8b64943f48b19411547445f39aad.png\" width=\"800\"\/><\/div>\n<p>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-285537","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/285537","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=285537"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/285537\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=285537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=285537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=285537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}