This shows you the differences between two versions of the page.
cns:labs:lab-10 [2021/01/11 16:55] mihai.dumitru2201 [C++ objects memory layout] |
cns:labs:lab-10 [2021/01/11 16:59] (current) mihai.dumitru2201 [C++ objects memory layout] |
||
---|---|---|---|
Line 310: | Line 310: | ||
class B { | class B { | ||
int a, b; | int a, b; | ||
+ | public: | ||
virtual void f(void); | virtual void f(void); | ||
}; | }; | ||
Line 315: | Line 316: | ||
class B1 { | class B1 { | ||
int x, y; | int x, y; | ||
+ | public: | ||
virtual void z(void); | virtual void z(void); | ||
}; | }; | ||
Line 320: | Line 322: | ||
class D: public B, public B1 { | class D: public B, public B1 { | ||
int c, d; | int c, d; | ||
+ | public: | ||
void f(void); | void f(void); | ||
void z(void); | void z(void); | ||
}; | }; | ||
- | D objD; B1 * ptrB1; | + | int main() |
- | ptrB1 = &objD; | + | { |
+ | D objD; B1 * ptrB1; | ||
+ | ptrB1 = &objD; | ||
+ | ptrB1->z(); | ||
+ | } | ||
</code> | </code> | ||
Line 345: | Line 352: | ||
We can also use the compiler to see the data layout. Copy the code above into | We can also use the compiler to see the data layout. Copy the code above into | ||
- | a file ''dummy.cpp'' and add a main function to make it a valid program: | + | a file ''dummy.cpp''. |
- | <code cpp> | + | |
- | int main() { return sizeof(D); } | + | |
- | </code> | + | |
Then run: | Then run: |