C++ Ile Nesne Yönelimli Programlama(C++ Sınıflarına Sabit(Static) Üyeler)

Aslihan Akbiyik
2 min readDec 3, 2020

--

Bu yazılar https://www.tutorialspoint.com/cplusplus/ adresindeki yazı dizilerinin çevirileridir.

“static” anahtar kelimesini kullanarak bir sınıf tanımlayabiliriz. Bir sınıfın bir üyesinin static olması sınıfın kaç adet nesnesinin oluşturulduğunun önemi olmadan static üyenin yalnızca bir kopyası olduğu anlamına gelir.

Static bir üye sınıfın tüm nesneleri tarafından paylaşılır. Başka bir tanımlama başlatması yoksa, ilk nesne oluşturulduğunda tüm static veriler sıfır olarak başlatılır(initialize). Bunu sınıf tanımına koyamayız, ama takip eden örnekte olduğu gibi sınıfın dışında hangi sınıfa ait olduğunu belirlemek için kapsam çözümleme operatörü :: kullanılarak static değişkeni yeniden bildirilerek başlatılabilir.

Static veri üyeleri kavramını anlamak için takip eden örneği deneyelim -

#include <iostream>

using namespace std;

class Kutu {

public:

static int nesneSayisi;

// Yapıcı tanımı

Kutu(double u = 2.0, double g = 2.0, double y = 2.0) {

cout <<“Yapici cagrildi.” << endl;

uzunluk = u;

genislik = g;

yukseklik = y;

// Her nesne oluşturulduğunda artır

nesneSayisi++;

}

double Hacim() {

return uzunluk * genislik * yukseklik;

}

private:

double uzunluk; // Kutunun uzunlugu

double genislik; // Kutunun genisligi

double yukseklik; // Kutunun yuksekligi

};

// Kutu sınıfından static üye başlatılması

int Kutu::nesneSayisi = 0;

int main(void) {

Kutu Kutu1(3.3, 1.2, 1.5); // kutu1 tanımı

Kutu Kutu2(8.5, 6.0, 2.0); // kutu2 tanımı

// Toplam nesne sayısını yazdır.

cout << “Toplam nesneler: “ << Kutu::nesneSayisi << endl;

return 0;

}

Yukarıdaki kod derlenip çalıştırıldığında takip eden sonucu oluşturur -

Yapici cagrildi.

Yapici cagrildi.

Toplam nesneler: 2

Sabit(Static) Fonksiyon Üyeleri

Bir fonksiyon üyesini static olarak bildirerek, onu sınıfın herhangi bir özel nesnesinden bağımsız hale getirirsiniz.

Static üye fonksiyonu, sınıfın hiçbir nesnesi olmasa ve fonksiyonlara yalnızca sınıf adı ve kapsam çözümleme operatörü :: kullanılarak erişilse bile çağrılabilir.

Static üye fonksiyonu sadece static veri üyesine, diğer static üye fonksiyonlarına ve sınıfın dışından diğer fonksiyonlara erişebilir.

Static üye fonksiyonlarının bir sınıf kapsamı vardır ve sınıfın bu işaretçisine erişimleri yoktur. Sınıfın bazı nesnelerinin oluşturulup oluşturulmadığını anlamak için static bir üye fonksiyonu kullanabilirsiniz.

Static fonksiyon üyelerini takip eden örnekle anlayalım -

#include <iostream>

using namespace std;

class Kutu {

public:

static int nesneSayisi;

// Yapıcı tanımı

Kutu(double u = 2.0, double g = 2.0, double y = 2.0) {

cout <<”Constructor called.” << endl;

uzunluk = u;

genislik = g;

yukseklik = y;

// Her nesne oluşturulduğunda artır

nesneSayisi++;

}

double Hacim() {

return uzunluk * genislik * yukseklik;

}

static int sayacKac() {

return nesneSayisi;

}

private:

double uzunluk; // Kutunun uzunlugu

double genislik; // Kutunun genisligi

double yukseklik; // Kutunun yuksekligi

};

// Kutu sınıfından static üye başlatımı

int Kutu::nesneSayisi = 0;

int main(void) {

// Nesne oluşturmadan toplam nesne sayısını yazdır.

cout << “Ilk asama sayisi: “ << Kutu::sayacKac() << endl;

Kutu Kutu1(3.3, 1.2, 1.5); // kutu1 tanımı

Kutu Kutu2(8.5, 6.0, 2.0); // kutu2 tanımı

// Nesne oluşturduktan sonra toplam nesne sayısını yazdır.

cout << “Son asama sayisi: “ << Kutu::sayacKac() << endl;

return 0;

}

Kod derlenip çalıştırıldığında takip eden sonuç oluşur -

Ilk asama sayisi: 0

Yapici cagrildi.

Yapici cagrildi.

Son asama sayisi: 2

https://www.tutorialspoint.com/cplusplus/cpp_static_members.htm

--

--

Aslihan Akbiyik

ICS Infrastructure Assistant Specialist @SOCAR | aslihana.bandcamp.com/