CodeBlanks Logo Icon CodeBlanks

this işaretçisi

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

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

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

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

Soru
void setName(std::string name) { ____->name = name; }
Cevap
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

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