CodeBlanks Logo Icon CodeBlanks

Özet - Static üyeler

static üye, metot ve const'u birleştirerek bir MathConstants sınıfı yazarsın.

Özet - Static üyeler

Bu grupta static üyeleri öğrendin. Static üye değişken tüm örnekler arasında paylaşılır; tanımı sınıf dışında yapılır. Static metot örnek olmadan çağrılır ve yalnızca static üyelere erişir.

static const tam sayı sabitleri sınıf içinde ilklendirilebilir. C++17 inline static ile her tür dış tanım olmadan sınıf içinde tanımlanabilir. static_assert ise derleme zamanında koşul denetler ve hatalı kodun derlenmesini engeller. Bu araçlar birlikte güvenli ve yeniden kullanılabilir sınıf tasarımı sağlar.

static_assert ve static const birlikte

Bu özette iki aracı birleştirelim: static const bir sabit tanımlayıp static_assert ile o sabiti derleme zamanında denetleyebilirsin.

Örneğin bir Bank sınıfında inline static int accountCount = 0; tutup her yeni hesapta artırabilirsin. Aynı kodda static_assert(sizeof(int) >= 2, ...) ile tür boyutunu garantiye alırsın. Bu, hem güvenli hem de header-only tasarıma uygun bir yaklaşımdır.

Uygulama Bank sınıfına inline static sayaç ekle

Bank sınıfını tanımla. public: altına inline static int accountCount = 0; ekle. Yapıcı metotta accountCount++ yap. public: altına static int getAccountCount() ekle; gövdesi return accountCount;. main içinde üç Bank oluştur ve std::cout << Bank::getAccountCount(); yaz.

Başlangıç kodu

main.cpp
#include <iostream>

// Bank sınıfını tanımla

int main() {
    // Üç Bank oluştur ve sayıyı yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

class Bank {
public:
    inline static int accountCount = 0;
    static int getAccountCount() { return accountCount; }
    Bank() { accountCount++; }
};

int main() {
    Bank b1;
    Bank b2;
    Bank b3;
    std::cout << Bank::getAccountCount();
    return 0;
}

Beklenen çıktı

3

Uygulama static_assert ile Bank kodunu güvenleştir

main içine static_assert(sizeof(int) >= 2, "int en az 2 bayt"); yaz. Ardından std::cout << "Güvenli"; ile derlemenin başarılı olduğunu göster.

Başlangıç kodu

main.cpp
#include <iostream>

int main() {
    // static_assert ve mesaj ekle
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

int main() {
    static_assert(sizeof(int) >= 2, "int en az 2 bayt");
    std::cout << "Güvenli";
    return 0;
}

Beklenen çıktı

Güvenli

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 inline static int count = 0; ne sağlar?

main.cpp
class Player { public: inline static int count = 0; };
  • Dış tanım gerektirmeden sınıf içi tanım Doğru cevap
  • Çalışma zamanı denetim yapar
  • Metodu gizler
  • Örnek oluşturmayı zorunlu kılar

Açıklama: inline static dış tanım olmadan sınıf içinde ilklendirme sağlar.

2 Kavramı amacına eşle

Kavram Anlamı
static int count; Paylaşılan üye
static int get() Örneksiz çağrı
inline static Dış tanımsız C++17
static_assert Derleme zamanı denetim

Orta seviye bölümündeki tüm dersler