this işaretçisi
- C++ kursu
- Orta seviye
- Ders 4/116
- 4 dk
this işaretçisi ile sınıfın kendisine erişmeyi öğrenirsin.
this işaretçisi
Üye fonksiyonların içinde this, çağrılan nesneyi işaret eden bir işaretçidir (pointer). this->name yazarak nesnenin kendi üyesine açıkça erişirsin. Bu, parametre adı üye adıyla aynı olduğunda belirsizliği giderir.
Örnek: void setName(std::string name) { this->name = name; }. Sağdaki name parametredir, soldaki this->name nesnenin üyelik değişkenidir. this kullanmadan yazarsan name = name; parametreyi kendine atar; üye değişmez.
Zincirleme çağrılar
this işaretçisinin yaygın bir kullanımı, metot zincirleme (method chaining) içindir. Bir üye fonksiyon return *this; ile kendi nesnesini döndürürse, çağrılar arka arkaya eklenebilir.
Örnek: Builder& add(int x) { total += x; return *this; }. Kullanımı: builder.add(1).add(2);. Burada her add aynı nesneyi döndürdüğü için sonraki çağrı yine aynı nesne üzerinde çalışır. *this işaretçinin gösterdiği nesnenin kendisidir.
Uygulama setName üye fonksiyonunu this ile yaz
Player sınıfını tanımla. public: altına std::string name; üye değişkeni ve void setName(std::string name) { this->name = name; } üye fonksiyonunu ekle. main içinde bir örnek oluştur, setName("Ayşe") çağır ve std::cout ile name'i yazdır.
Başlangıç kodu
#include <iostream>
#include <string>
// Player sınıfını tanımla
int main() {
// Player örneği oluştur, setName çağır ve name yazdır
return 0;
}Örnek çözüm
#include <iostream>
#include <string>
class Player {
public:
std::string name;
void setName(std::string name) {
this->name = name;
}
};
int main() {
Player player;
player.setName("Ayşe");
std::cout << player.name;
return 0;
}Beklenen çıktı
Ayşe
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 this->name = name; ne yapar?
void setName(std::string name) { this->name = name; }- Yeni bir yerel değişken oluşturur
- Parametreyi siler
- Nesnenin üyesini parametre değeriyle günceller Doğru cevap
- Hiçbir şey yapmaz
Açıklama: this->name üyeyi, sağdaki name parametreyi gösterir.
2 this işaretçisini yaz
void setName(std::string name) { ____->name = name; }
void setName(std::string name) { this->name = name; }
Açıklama: this işaretçisi çağrılan nesneyi gösterir.
3 İfadeyi anlamına eşle
| Kavram | Anlamı |
|---|---|
this |
Nesneyi işaret eden işaretçi |
this->name |
Üye değişkene erişim |
*this |
İşaretçinin gösterdiği nesne |
return *this; |
Zincirleme için nesneyi döndür |