28 Mayıs 2009 Perşembe

Class, struct ve union'ın birbirleri ile bağlantıları

C++’ta genel olarak kullandığımız class’ların yanında struct ve union kod yapıları da vardır. Bu üçü genelde aynı işi yapmalarına rağmen derine indikçe ufak tefek farklılıklar göze çarpmaktadır. Bu farklılıkların başında tanımlamaların tipleri gelmektedir.Örneğin bir class kod yapısında düzen;







Burada değişkenlerimizi private, fonksiyonlarımızı ise public olarak tanımlıyoruz. Struct’ta ise tam tersi bir durum söz konusudur;




Struct’larda değişkenler public, fonksiyonlar ise private olarak tanımlanır. Ve kullanımı da buna göre şekillenir. Kod yapısı struct’la neredeyse aynı olan union ise;


Dikkat edildiği gibi değişkenler public, fonksiyonlar private olarak tanımlanıyor. Biraz union’ın üzerinde durmak istiyorum. Union’ın kod ve veriyi bağlayabilme kabiliyeti, tüm verilerin aynı yeri paylaştığı sınıfları oluşturmamıza imkan verir. Bunu sınıflarla yapmamız mümkün değildir. Unionlar constructor ve deconstructor içermezler ve de gerçel fonksiyonlara sahip olamazlar.

Nerdeyse birbirinin aynısı olan bu kod yapıları kullanıcının stiline bağlı olarak kullanılır. Siz bir programı ister classlarla, ister structarla, ve de unionlarla yapabilirsiniz. Ama unutulmamalıdır eğer bellek için mallocla yer ayırmışsanız, deconstructor kullanmanız sizin için çok daha iyi olacaktır. Bu yüzden union kullanımı diğerlerinden biraz daha geri kalmıştır.

Hiç yorum yok: