'this' İşaretçisi
Coddy'nin C++ Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 7 / 104.
C++'da, this geçerli nesneye yönelik bir işaretçidir. Özellikle parametre adları üye adlarıyla eşleştiğinde, üyelere erişmek için this-> kullanın.
this olmadan, parametre üyeyi gölgeler
void Player::setName(std::string name) {
name = name; // Parametreyi kendisine atar! Üye değişmez.
}Değerleri doğru bir şekilde atamak için this-> kullanma
void Player::setName(std::string name) {
this->name = name; // Parametreyi üyeye atar
}Metotlarda this-> kullanımı
std::string Player::getStatus() {
return this->name + " - Score: " + std::to_string(this->score);
}this işaretçisi her zaman geçerli nesne örneğini gösterir. this'in bir referans olduğu Java ve C#'ın aksine, C++'da bu bir işaretçidir; bu nedenle üyelere erişmek için . yerine -> kullanırsınız.
Görev
OrtaAynı isme sahip üyeler ve parametreler arasındaki ayrımı yapmak için this-> kullanarak Player sınıfı metotlarını uygulayın:
- Setter metotları: parametreleri üyelere atamak için
this->kullanın getStatus(): üyelere erişmek içinthis->kullanın,"<name> - Score: <score>, Level: <level>"döndürün
Kopya kağıdı
C++'da, this geçerli nesneye yönelik bir işaretçidir. Özellikle parametre adları üye adlarıyla eşleştiğinde, üyelere erişmek için this-> kullanın.
this olmadan, parametre üyeyi gölgeler:
void Player::setName(std::string name) {
name = name; // Parametreyi kendisine atar! Üye değişmez.
}Değerleri doğru şekilde atamak için this-> kullanımı:
void Player::setName(std::string name) {
this->name = name; // Parametreyi üyeye atar
}Metotlarda this-> kullanımı:
std::string Player::getStatus() {
return this->name + " - Score: " + std::to_string(this->score);
}this işaretçisi her zaman geçerli nesne örneğini gösterir. this'in bir referans olduğu Java ve C#'ın aksine, C++'da bir işaretçidir, bu nedenle üyelere erişmek için . yerine -> kullanırsınız.
Kendin dene
#include <iostream>
#include "Player.h"
int main() {
std::string name;
int score, level;
std::getline(std::cin, name);
std::cin >> score >> level;
Player player;
player.setName(name);
player.setScore(score);
player.setLevel(level);
std::cout << "Name: " << player.name << std::endl;
std::cout << "Score: " << player.score << std::endl;
std::cout << "Level: " << player.level << std::endl;
std::cout << player.getStatus() << std::endl;
return 0;
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarC++ Build ve DerlemeBaşlık Dosyaları ve Kaynak DosyalarıAd Alanları ve KapsamC++'ta OOP'ye GirişSınıflar ve Nesneler'this' İşaretçisiMetotlar (Üye Fonksiyonlar)Öznitelikler (Veri Üyeleri)Ctor ve Dtor TemelleriÖzet - Basit Hesap Makinesi4Sınıf Özellikleri
Örnek ve Statik ÜyelerGetter ve Setter MetotlarıConst Üye FonksiyonlarMutable Anahtar KelimesiStatik Metotlar ve DeğişkenlerFriend Fonksiyonlar ve SınıflarÖzet - Banka Hesabı Yöneticisi7Kalıtım
Temel KalıtımKalıtım Erişim SeviyeleriCtor ve Dtor Çağrılma SırasıMetot Geçersiz KılmaSanal Fonksiyonlar ve VTableÇoklu KalıtımSanal KalıtımÖzet - Çalışan Hiyerarşisi10STL Genel Bakış
STL Genel Bakış ve FelsefesiSTL KonteynerleriİteratörlerSTL AlgoritmalarıFunctor'lar ve Lambda İfadeleriÖzet - Kelime Frekansı13Tasarım Kalıpları 1. Bölüm
Tasarım Kalıplarına GirişSingleton KalıbıFactory ve Abstract FactoryBuilder KalıbıObserver KalıbıStrategy Kalıbı2Bellek Yönetimi
Stack ve Heap Bellekİşaretçiler ve ReferanslarDinamik Bellek (new/delete)C++'ta Akıllı İşaretçilerC++'ta RAIIÖzet - Dinamik Dizi Yöneticisi5Kapsülleme
C++'da Erişim BelirleyicilerDerinlemesine Erişim BelirleyicilerBilgi GizlemeStruct vs Classİç İçe ve Dahili SınıflarÖzet - Öğrenci Kayıt Sistemi8Çok Biçimlilik
Derleme ve Çalışma Zamanı Çok BiçimliliğiFonksiyon Aşırı YüklemeSanal Fonksiyonlara Yeniden BakışSaf Sanal FonksiyonlarSoyut SınıflarC++'ta Arayüz TasarımıDynamic Casting ve RTTIÖzet - Şekil Hesaplayıcı3Yapıcılar ve Yıkıcılar
Varsayılan YapıcıParametreli YapıcıKopya YapıcıTaşıma YapıcısıYapıcı İlklendirme ListeleriTemsilci YapıcılarYıkıcılara Derinlemesine BakışÜç / Beş / Sıfır KuralıÖzet - String Sınıfı6Operatör Aşırı Yükleme
Operatör Aşırı Yüklemeye GirişAritmetik Operatör Aşırı YüklemeKarşılaştırma Operatörü Aşırı YüklemeStream OperatörleriAtama Operatörü Aşırı Yükleme[] ve () Operatör Aşırı YüklemeTip Dönüşüm OperatörleriÖzet - Matris Sınıfı9Şablonlar
Fonksiyon ŞablonlarıSınıf ŞablonlarıŞablon ÖzelleştirmeVariadic ŞablonlarSFINAE ve Type Traits TemelleriÖzet - Generic Konteyner