Nonstatic class-member data is stored in such a way that items falling between access specifiers are stored at successively higher memory addresses. No ordering across access specifiers is guaranteed.
Microsoft Specific
Depending on the /Zp compiler option or the pack pragma, intervening space can be introduced to align member data on word or doubleword boundaries.
In Microsoft C++, class-member data is stored at successively higher memory addresses, even though the C++ language does not require it. Basing assumptions on this ordering can lead to nonportable code.
END Microsoft Specific