| |
| Posted by İbrahim in reply to hsencan | PermalinkReply |
|
İbrahim
Posted in reply to hsencan
| protected olarak tanımlamasının sebebi o kurucu fonksiyonu yalnızca Butce sınıfından türetilmiş bir sınıf içinden kullanılabilir olmasını istemiş. Tabii ki burada bir hata var, aslında o kurucu fonksiyon hiçbir işlem yapmıyor. Yani gereksiz olmuş. nesne üyesinin static olmasının sebebiyse bu sınıftan veya bu sınıftan türetilmiş olan olan sınıflardan herhangi bir nesne üretildiğinde o nesne adındaki üye bütün üretilen nesnelerde aynı değere sahip olacak. Çünkü static olduğu için tek bir tane bu üyeden oluşuyor. nesneAl fonksiyonunun static olması ise şudur: C++'da sınıflarda / yapılarda static olarak tanımlanan bir fonksiyon, o sınıftan oluşturulan herhangi bir nesne olmadan direk olarak kullanılmasını sağlıyor. Yani eğer static olmasaydı:
Butce b1;
b1.nesneAl(); // Çalışır
Butce::nesneAl(); // Çalışmaz
İşte nesne olmadan bu fonksiyonu çağırmak istemiş ve bu yüzden static yapmış. Artık Butce::nesneAl(); diyerek kullanabiliriz. Ama neden böyle birşey yapmak istemiş dersen onun sebebi de şudur: Biraz önce söylediğim üzere bu sınıftan oluşturulan veya bu sınıftan türetilmiş sınıflardan oluşturulan ne kadar nesne olursa olsun hepsinde ortak kullanılacak olan sadece bir tane nesne adlı üye oluşturulacak ve bu tek olduğu için yeni bir nesne oluşturmadan direk olarak istediği zaman Butce::nesneAl() diyerek tek olan bu nesne adlı üyeyi alabilecek.
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
|