C++
Ö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.
Örnek çözümü göster
#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;
}
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.
Örnek çözümü göster
#include <iostream>
int main() {
static_assert(sizeof(int) >= 2, "int en az 2 bayt");
std::cout << "Güvenli";
return 0;
}
Kendini test et
-
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
- Çalışma zamanı denetim yapar
- Metodu gizler
- Örnek oluşturmayı zorunlu kılar
Cevabı göster
Dış tanım gerektirmeden sınıf içi tanım — inline static dış tanım olmadan sınıf içinde ilklendirme sağlar.
-
Kavramı amacına eşle
- 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
Sıradaki ders: Polimorfizm temelleri