static metotlar
- C++ kursu
- Orta seviye
- Ders 31/116
- 5 dk
static metotları ve örnek olmadan çağırmayı öğrenirsin.
static metotlar
Bir static metot, örnek oluşturmadan sınıf adıyla çağrılabilen metottur. static int getCount() bildirimi metodu statik yapar.
Static metotların içinde this işaretçisi yoktur; bu yüzden yalnızca static üyelere erişebilirler. Örnek üyeye erişmek için bir nesne gerekir. Çağrı: Player::getCount(). Bu, bir Player örneği olmadan bile çalışır. Static metotlar yardımcı fonksiyonları ve sayaç erişimcilerini gruplandırmak için idealdir.
Static metodun sınırları
Static bir metodun içinde this işaretçisi bulunmadığı için doğrudan örnek üyelerine erişemez. id gibi örnek üyeye erişmek istersen derleme hatası alırsın.
Buna karşılık count gibi static üyelere erişebilirsin, çünkü onlar sınıfa aittir, örneğe değil. Bu kısıtlama, static metotların örneği olmayan yardımcılar olarak çalışmasını sağlar. Eğer bir örnek üyeye erişmen gerekirse, metodu static yapma; normal metot olarak bırak.
Uygulama Player sınıfına static getCount ekle
Player sınıfına static int count; üye ve yapıcı metotta count++ ekle. public: altına static int getCount() metodu ekle; gövdesi return count;. Sınıf dışında int Player::count = 0; tanımını yaz. main içinde iki Player oluştur ve std::cout << Player::getCount(); yaz.
Başlangıç kodu
#include <iostream>
// Player sınıfını tanımla
int main() {
// İki Player oluştur ve getCount yazdır
return 0;
}Örnek çözüm
#include <iostream>
class Player {
public:
static int count;
static int getCount() { return count; }
Player() { count++; }
};
int Player::count = 0;
int main() {
Player p1;
Player p2;
std::cout << Player::getCount();
return 0;
}Beklenen çıktı
2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Static metodun bildirimini tamamla
class Player { public: ____ int getCount() { return count; } };
class Player { public: static int getCount() { return count; } };
Açıklama: static anahtar kelimesi metodu statik yapar.
2 static metot içinden hangisine erişilebilir?
class Player {
int id;
static int count;
static int get() { }
};- count Doğru cevap
- id
- this->id
- this->count
Açıklama: static metot içinden yalnız static üyelere erişilir.
3 Bileşeni rolüne eşle
| Kavram | Anlamı |
|---|---|
static int get() |
Statik metot |
Player::get() |
Çağrı |
this |
Statik metotta yok |
count |
Erişilebilir |