2013-04-02 23 views
26

Bir meslektaşım, aşağıdaki türde, tüm üyelerin, bellekte belirtilmemiş bir sıralamaya sahip olduklarını söylediler (birbirlerine göre).Bu üyeler belirsiz sipariş veriyor mu?

Bundan şüphe ediyorum çünkü hepsi aynı erişim seviyesine sahipler.

Kim bu?

struct foo { public: int x; public: int y; public: int z; }; 

cevap

31

Arkadaşınız C++ 03 için doğrudur: Bir (sendikasız) sınıfının

[C++03: 9.2/12]: Statik olmayan veri üyeleri araya giren erişim-belirteci olmadan ilan böylece tahsis edilir sonradan üye Bir sınıf nesnesi içinde daha yüksek adreslere sahip olmak. Bir erişim belirleyici tarafından ayrılan nonstatik veri üyelerinin tahsis sırası belirtilmemiş (11.1). [..]

Ama için doğru C++ 11:

erişim kontrolü (Madde 11 ile (kaynama) arasında [C++11: 9.2/14]: Statik olmayan veri üyeleri sınıfı

) daha sonra üyeler bir sınıf nesnesi içinde daha yüksek adreslere sahip olacak şekilde tahsis edilir. Statik olmayan veri elemanlarının farklı erişim kontrolü ile tahsis sırası belirtilmemiş (11). [..]

(farkı nokta).