2011-06-28 30 views
6

Sendika örneklerini her gördüğümde bunlar her zaman farklı türlerdir. Örneğin, MSDN'den: Bu gibi (bu durumda anonim, ama bu önemli olmamalı) bir birlik varsa ne olurC++ ile aynı türde birleşim

// declaring_a_union.cpp 
union DATATYPE // Declare union type 
{ 
    char ch; 
    int i; 
    long l; 
    float f; 
    double d; 
} var1;   // Optional declaration of union variable 

int main() 
{ 
} 

:

union 
{ 
    float m_1stVar; 
    float m_1stVarAlternateName; 
}; 

olursa olsun bu iyi bir uygulama olup olmadığı ya da değil, bu herhangi bir sorun olur mu?

+0

Bunun neden olabileceğini düşünüyorsunuz? –

+0

Yolsuzluğun bozulmasıyla karşılaşıyorum ve bu sorunun cevabı başka bir soruna yol açacaktır :) ... Tüm olasılıkları ortadan kaldırmak istiyorum. Bu durumda, herhangi bir sorun görmüyorum, ama 'asla bilmeyeceksiniz' dedikleri gibi. – Samaursa

+0

Sanırım, sadece kod incelemesi dışında bazı araçlar kullanıyorsunuz? Unix-beğeni valgrind, Windows üzerinde alternatifler hakkında emin değilim (http://stackoverflow.com/questions/413477/is-there-a-good-valgrind-substitute-for-windows). Kod incelemesi ile yığın bozulması bulmak çok zaman alıcı olabilir. –

cevap

10

Hayır, bu sorunlara neden olmaz. Bunu daha sık görmemenizin nedeni, bunun anlamsız olmasıdır - her iki isim de aynı türden aynı değere işaret eder.

+7

Doğru, ancak bazen türlerin aynı olup olmadığını bilmeyebilirsiniz (bunlardan biri şablon argümanı gibi). – leftaroundabout

+1

@leftaroundabout, dikkate almadığım çok güzel bir nokta. Teşekkürler. –

+2

Bunu necro için özür dilerim, ancak bu yedeklenebilir mi? Bir yerde tanımlanmış mı? Açıkçası işe yarayacak, ama _guaranteed_? – Shaggi

İlgili konular