inline static
- C++ kursu
- Orta seviye
- Ders 33/116
- 5 dk
inline static ile C++17 sınıf içi tanım öğrenirsin.
inline static (C++17)
C++17 ile gelen inline static, bir static üyenin sınıf gövdesinde doğrudan ilklendirilmesini sağlar. Ayrı bir dış tanım gerekmez: inline static int count = 0;.
Bu, header-only tasarım için idealdir; bir başlık dosyası birden çok .cpp dosyasına dahil edilse bile tanım çakışması (ODR ihlali) oluşmaz. inline anahtar kelimesi derleyiciye bu tanımın birden çok çeviri biriminde bulunabileceğini bildirir. Artık her tür (yalnızca tam sayı değil) sınıf içinde ilklendirilebilir.
inline static ne zaman?
inline static özellikle başlık dosyasında tanımlanan sınıflar için kullanışlıdır. Normal static üyelerde dış tanım bir .cpp dosyasında yapılmalıdır; aksi halde birden çok dosyada tanım çakışması olur.
inline static ile bu sınırlama kalkar. Hem tam sayı hem std::string gibi türler sınıf içinde değer alabilir. Örneğin inline static std::string name = "oyun"; geçerlidir. Bu, modern C++ projelerinde header-only kütüphaneler yazmayı kolaylaştırır.
Uygulama inline static ile sayaç ekle
Player sınıfını tanımla. public: altına inline static int count = 0; ekle. Yapıcı metotta count++ yap. main içinde iki Player oluştur ve std::cout << Player::count; yaz. Dış tanım YAZMA.
Başlangıç kodu
#include <iostream>
// Player sınıfını tanımla
int main() {
// İki Player oluştur ve count yazdır
return 0;
}Örnek çözüm
#include <iostream>
class Player {
public:
inline static int count = 0;
Player() { count++; }
};
int main() {
Player p1;
Player p2;
std::cout << Player::count;
return 0;
}Beklenen çıktı
2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 inline static bildirimini tamamla
class Player { public: ____ int count = 0; };
class Player { public: inline static int count = 0; };
Açıklama: inline static C++17 ile dış tanım gerektirmez.
2 Bildirimi özelliğine eşle
| Kavram | Anlamı |
|---|---|
inline static int x = 0; |
C++17 sınıf içi tanım |
static int x; |
Dış tanım gerekir |
static const int N = 5; |
Tam sayı sınıf içi |
int Player::count = 0; |
Dış tanım biçimi |
3 inline static'nin avantajı nedir?
inline static int count = 0;- Metodu hızlandırır
- Private yapar
- Dış tanım gerektirmez Doğru cevap
- Bellek tasarrufu sağlar
Açıklama: inline static dış tanım olmadan sınıf içinde ilklendirilebilir.