static c
C ++ 'da Statiğin Önemi ve Örneklerle Kullanımı.
Depolama sınıfları ile ilgili önceki konularımızda, statik kelimesi ile tanışmıştık. Bir C ++ programında bildirilen statik değişkenleri öğrendik. Statik değişkenlerin yalnızca bir kez başlatıldığını ve program boyunca değeri koruduğunu biliyoruz.
Statik değişkenlere benzer şekilde, bu eğiticide, statik anahtar sözcüğün kullanımını şu şekilde genişleteceğiz:
- Bir sınıftaki statik üye değişkenleri
- Statik sınıf nesneleri
- Statik yöntemler sınıfı
=> Derinlemesine C ++ Eğitim Öğreticilerine Buradan Bakabilirsiniz.
Ne öğreneceksin:
test mülakat sorularında yazılım geliştiricisi
- Bir Sınıftaki Statik Üye Değişkenleri
- Statik Sınıf Nesneleri
- Bir Sınıfta Statik Yöntemler
- Statik Fonksiyonların Amacı
- Sonuç
- Önerilen Kaynaklar
Bir Sınıftaki Statik Üye Değişkenleri
Bir statik değişken hiçbir zaman bir yığın üzerinde tahsis edilmez. Farklı statik depolama alanlarına ayrılırlar. Bu, bir sınıfta statik bir değişken tanımladığımızda, bu değişkenin o sınıfın tüm nesneleri tarafından paylaşıldığı anlamına gelir.
Statik değişkenler yalnızca bir kez başlatıldığından ve bir sınıfın tüm nesneleri tarafından paylaşıldığından, statik değişkenler hiçbir zaman bir yapıcı tarafından başlatılmaz. Bunun yerine, statik değişken, kapsam çözüm operatörü (: :) kullanılarak yalnızca bir kez sınıfın dışında açıkça başlatılmalıdır.
İlk nesne oluşturulduğunda, ilkel türdeki tüm statik veriler, başka bir başlatma olmadığında sıfır olarak başlatılır.
Bir sınıftaki statik değişkeni gösteren aşağıdaki örneği kontrol edin.
Aşağıdaki kodda gösterildiği gibi, sınıf örneğinin bir üyesi olarak statik değişken sayısına sahibiz. Bu değişkeni açıkça sınıfın dışında başlangıç değeri = 0 ile başlattığımıza dikkat edin;
Daha sonra bu statik değişkeni sınıfın yapıcısında artırıyoruz.
Örnek bir programa bakalım.
#include #include using namespace std; class sample{ int var; static int count; public: sample(int var):var(var){ cout<<'Count = '< Çıktı:
Sayı = 0
Sayı = 1
Sayı = 2
Ana işlevde üç farklı nesne oluşturuyoruz. Çıktıda, statik değişkenin değerinin nesne yaratımları arasında korunduğunu ve her nesne oluşturmada sıfırlanmadığını görüyoruz. Bu ilk nesne için say = 0'dır. Ardından 1'e yükseltilir. Sonraki nesne için sayı = 1 vb.
Sayı herhangi bir sıradan değişken olsaydı, çıktı şu olurdu:
Sayı = 0
Sayı = 0
Sayı = 0
Statik Sınıf Nesneleri
Sınıfın statik üye değişkenleri gibi, sınıf nesnelerini de statik olarak bildirebiliriz. Statik sınıf nesneleri de yalnızca bir kez başlatılır ve program boyunca etkin kalır. Nesne kullanıcı tanımlı bir tür olduğundan, statik bir sınıf nesnesi, bir yapıcı kullanılarak sıradan nesnelere benzer şekilde başlatılır.
Statik sınıf nesnelerini daha iyi anlamak için bir programlama Örneği alalım.
#include using namespace std; class xyz { int i; public: xyz() { i=0; cout << 'Constructor::xyz'<Bu programda, bir yapıcı ve bir yıkıcı içeren bir xyz sınıfımız var. Ana fonksiyonda, x = 0 değişkenini beyan ederiz; Eğer x sıfıra eşitse, xyz sınıfından statik bir nesne oluşturuyoruz.
Program aşağıdaki çıktıyı verir.
Çıktı:
10 yıllık deneyim için java j2ee mülakat soruları
Oluşturucu :: xyz
Ana Bitiş
Yıkıcı :: xyz
Normalde çıktı olmalıdır
Oluşturucu :: xyz
Yıkıcı :: xyz
Ana Bitiş
Ancak statik bir nesne oluşturduğumuzda, bu nesnenin programın sonuna kadar bir kapsamı vardır ve nesne kapsam dışına çıktığında (if ifadesinin sonu) değil. Nesne için yıkıcının ancak ana işlevin sonuna ulaşıldıktan sonra çalıştırılmasının nedeni budur.
Bir Sınıfta Statik Yöntemler
Ayrıca bir sınıfta statik yöntemlere sahip olabiliriz. Statik nesneler ve statik üye değişkenler gibi, statik üye işlevler de programın yürütülmesi sona erene kadar kapsama sahiptir.
Bir sınıf yöntemi statik olarak bildirildiğinde, yalnızca statik üyelere, yani statik değişkenlere ve sınıfın statik işlevlerine erişebilir. Sınıfın sıradan üyelerine erişemez.
Ayrıca, statik sınıf yöntemleri için kullanılabilecek 'bu' işaretçisi yoktur.
c ++ 'da kabarcık sıralaması
Bir sınıfın statik yöntemlerine erişmek için nesneyi ve nokta operatörünü kullanmamıza izin verilir, ancak bu yöntemlere erişmek için sınıf adını ve kapsam çözümleme operatörünü kullanmanız önerilir.
Aşağıda, bir sınıfta statik yöntem kullanımına bir örnek verilmiştir.
Bu örnekte, iki statik üye değişkeni A ve B ve statik bir yöntem printValues tanımladık. A ve B değişkenleri sırasıyla 10 ve 20 değerleriyle başlatılır. Statik yöntemde printValues, A ve B değerleri sırasıyla Artış sonrası ve Artış öncesi işlemlere tabi tutulur. Bundan sonra değerler yazdırılır.
Ana yöntemde, statik işlevleri çağırmak için herhangi bir nesneye ihtiyacımız olmadığından, sınıf adını kullanarak doğrudan printValues statik yöntemini çağırırız.
#include using namespace std; class Sample { static int A; static int B; public: static void printValues(){ A++; ++B; cout <<'Value of A: ' << A << endl; cout <<'Value of B: ' << B << endl; } }; int Sample :: A =10; int Sample :: B =20; int main(){ Sample::printValues(); return 0; }
Çıktı:
A Değeri: 11
B Değeri: 21
Aynı çıktının ekran görüntüsü aşağıda verilmiştir.
Böylece çıktıda, her iki statik değişkenin değerlerinin, üzerlerinde gerçekleştirilen işlemlere göre değiştirildiğini görüyoruz.
Statik Fonksiyonların Amacı
Bu öğreticide static anahtar kelimesinin çeşitli kullanımlarını gördükten sonra, statik işlevlerin amacının ne olduğu sorusu kalır.
Statik fonksiyonların amacı aşağıdaki gibi özetlenebilir:
- Bu işlev çağırmak ve çalışmak için nesneye bağlı olmadığında statik işlevleri kullanırız.
- Statik işlevi kullanmanın bir başka amacı da kullanımını sınırlamaktır. Global işlevlerden farklı olarak, statik işlevlere erişim, yerleştirildikleri dosyayla sınırlıdır. Bu nedenle, işleve erişimi sınırlamak için onu statik hale getiriyoruz.
- Yukarıdaki iki nedenden ayrı olarak, sadece herhangi bir sınıf üyesine atıfta bulunmayan bir işlevi yürütmek için bir sınıfın bir nesnesini oluşturmak istemediğimizde statik işlevleri kullanırız.
Sonuç
Bu konuyu sonlandırmak için, C ++ 'daki statik anahtar kelimenin değişkenleri, üye değişkenleri, sınıf nesnelerini, yöntemleri vb. Bildirmek için çeşitli şekillerde kullanılabileceğini söyleyebiliriz.
Statik üye işlevlerine ve değişkenlerine nesne ile erişilmesine gerek yoktur, bunun yerine sınıf adı kullanılarak doğrudan erişilebilirler. Ayrıca, statik varlıkların kapsamı programın yürütülmesi boyunca kalır. Bu nedenle statik anahtar kelime, belirli bir varlığın erişimini kontrol etmek için de kullanılabilir.
Yaklaşan eğitimlerimizde, C ++ 'daki diğer birçok OOP konusu hakkında daha fazla bilgi edineceğiz.
=> Burada C ++ Eğitim Öğreticilerinin A-Z'sini Görmek İçin Burayı Kontrol Edin.
Önerilen Kaynaklar
- Mockito Kullanarak Özel, Statik ve Geçersiz Yöntemleri Alay Etmek
- Statik Test ve Dinamik Test - Bu İki Önemli Test Tekniği Arasındaki Fark
- EN İYİ 40 Statik Kod Analiz Araçları (En İyi Kaynak Kodu Analiz Araçları)
- En İyi ÜCRETSİZ C # Eğitim Serisi: Yeni Başlayanlar İçin En İyi C # Rehberi
- LoadRunner'da Statik Değerlerin Parametrelendirilmesi
- Python Değişkenleri
- C ++ 'da Kalıtım Türleri
- C ++ 'da Değişkenler