Özet - Static üyeler
- C++ kursu
- Orta seviye
- Ders 35/116
- 5 dk
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
#include <iostream>
// Bank sınıfını tanımla
int main() {
// Üç Bank oluştur ve sayıyı yazdır
return 0;
}Örnek çözüm
#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
#include <iostream>
int main() {
// static_assert ve mesaj ekle
return 0;
}Örnek çözüm
#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?
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 |