Rumah >pembangunan bahagian belakang >C++ >Apakah yang Dirujuk Penunjuk 'ini' dalam Fungsi Ahli C?

Apakah yang Dirujuk Penunjuk 'ini' dalam Fungsi Ahli C?

Linda Hamilton
Linda Hamiltonasal
2024-11-15 08:44:03962semak imbas

What Does the 'this' Pointer Refer to in C   Member Functions?

Penunjuk Enigmatik 'ini': Menyingkap Tujuannya

Dalam bidang pengaturcaraan berorientasikan objek, penunjuk 'ini' memegang peranan penting. Ia berfungsi sebagai atribut di mana-mana dalam fungsi ahli, namun tingkah lakunya yang membingungkan sering membingungkan orang baru.

Memahami Peranan 'ini'

Untuk membongkar misteri, mari kita selidiki ke dalam senario C anda dihadapi:

void do_something_to_a_foo(Foo *foo_instance);

void Foo::DoSomething()
{
  do_something_to_a_foo(this);
}

Apakah Rujukan 'ini'?

Persoalan penting masih ada: apakah yang dimaksudkan oleh kata kunci 'ini' dalam ahli DoSomething() fungsi? Jawapannya terletak pada sambungan intimnya dengan objek semasa.

ini sebagai Parameter Tersembunyi

Penunjuk 'ini' pada asasnya berfungsi sebagai parameter tersembunyi. Apabila tika kelas Foo (cth., x) menggunakan kaedah DoSomething(), ia secara tersirat menghantar alamat ingatannya sendiri sebagai 'ini'.

Contoh Penjelasan

Untuk mengukuhkan konsep ini, pertimbangkan seruan berikut:

Foo x;
x.DoSomething();

Apabila x memanggil DoSomething(), 'ini' dalam fungsi ahli akan secara automatik memegang alamat x.

Perkaitan 'ini' dalam Fungsi Ahli Bukan statik

Bukan -fungsi ahli statik, seperti DoSomething(), mempunyai akses terus kepada data ahli objek yang mengandungi. Penunjuk 'ini' membolehkan kebolehcapaian ini dengan menyediakan pautan ke memori objek itu sendiri. Melalui 'ini', fungsi ini boleh memanipulasi atribut dan kaedah objek yang dimilikinya.

Atas ialah kandungan terperinci Apakah yang Dirujuk Penunjuk 'ini' dalam Fungsi Ahli C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn