Pointer 'this'
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan C++ di Coddy. Pelajaran 7 dari 104.
Dalam C++, this adalah pointer ke object saat ini. Gunakan this-> untuk mengakses member, terutama saat nama parameter sama dengan nama member.
Tanpa this, parameter menaungi member: di dalam method, name berarti parameter, yang menyembunyikan member dengan nama yang sama. Jadi, name = name hanya menetapkan parameter ke dirinya sendiri.
void Player::setName(std::string name) {
name = name; // Parameter diisi dengan nilainya sendiri! Anggota class tetap tidak berubah.
}Menggunakan this-> untuk menetapkan nilai dengan benar
void Player::setName(std::string name) {
this->name = name; // Menetapkan parameter ke anggota class
}Menggunakan this-> dalam method
std::string Player::getStatus() {
return this->name + " - Score: " + std::to_string(this->score);
}Pointer this selalu menunjuk ke instance object saat ini. Berbeda dengan Java dan C#, yang menggunakan this sebagai referensi, di C++ this adalah pointer, jadi kamu menggunakan -> alih-alih . untuk mengakses anggota.
Tantangan
SedangImplementasikan method class Player menggunakan this-> untuk membedakan member dan parameter yang memiliki nama sama:
- Method setter: gunakan
this->untuk menetapkan parameter ke member getStatus(): gunakanthis->untuk mengakses member, lalu kembalikan"<name> - Score: <score>, Level: <level>"
Coba sendiri
#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;
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Object
1Dasar-Dasar OOP
File EksternalBuild dan Kompilasi C++File Header dan File SourceNamespace dan CakupanPengantar OOP dalam C++class vs objectPointer 'this'method (Fungsi Anggota)Atribut (Anggota Data)Dasar Ctor dan DtorRingkasan: Kalkulator Sederhana4Properti class
Anggota instance vs staticGetter dan setterFungsi anggota constKata kunci mutableMethod dan variabel staticFungsi dan class friendRangkuman, Pengelola Rekening Bank7Pewarisan
Pewarisan DasarTingkat Akses pada PewarisanUrutan Pemanggilan Ctor & DtorPenimpaan methodFungsi Virtual & VTablePewarisan BergandaPewarisan VirtualRangkuman: Hierarki Karyawan2Manajemen Memori
Memori Stack vs HeapPointer dan ReferenceMemori Dinamis (new/delete)Smart Pointer di C++RAII di C++Rangkuman: Pengelola Array Dinamis5Enkapsulasi
Penentu Akses dalam C++Penentu Akses secara MendalamPenyembunyian Informasistruct vs classNested dan Inner classRangkuman, Sistem Catatan Siswa8Polimorfisme
Polimorfisme saat Compile vs RuntimeOverloading FungsiMeninjau Kembali Fungsi VirtualFungsi Virtual MurniKelas AbstrakDesain Interface di C++Casting Dinamis & RTTIRangkuman: Kalkulator Bentuk3Konstruktor & Destruktor
Konstruktor DefaultKonstruktor BerparameterKonstruktor SalinKonstruktor PindahDaftar Inisialisasi KonstruktorKonstruktor DelegasiKupas Tuntas DestruktorAturan Tiga, Lima, dan NolRangkuman: class String6Overloading Operator
Pengantar Overloading OperatorOverloading Operator AritmetikaOverloading Operator PerbandinganOperator StreamOverloading Operator PenugasanOverloading Operator [] dan ()Operator Konversi TipeRingkasan, class Matrix9Template
Template FungsiTemplate classSpesialisasi TemplateTemplate VariadikDasar SFINAE & Type TraitsRangkuman, Container GenerikLatihan sendiri: Compiler C++ online