CodeBlanks Logo Icon CodeBlanks

inline static

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

main.cpp
#include <iostream>

// Player sınıfını tanımla

int main() {
    // İki Player oluştur ve count yazdır
    return 0;
}

Örnek çözüm

main.cpp
#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

Soru
class Player { public: ____ int count = 0; };
Cevap
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?

main.cpp
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.

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