Mempelajari pemrograman: Apa perbedaan antara operator titik (.) Dan -> dalam C ++? [duplikat]?


Jawaban 1:

Operator titik menyediakan akses ke anggota objek di mana operan kiri adalah nama objek atau referensi ke objek. Operator panah menyediakan akses ke anggota objek yang ditunjuk oleh operan kiri (yang merupakan pointer biasa).

Selain itu, operator panah mungkin kelebihan beban; jadi jika operan kiri bukan pointer biasa tetapi objek, operator mungkin memiliki arti yang berbeda. Namun, hasilnya harus berupa pointer biasa atau referensi ke objek yang ada (yang juga memiliki operator akses yang ditentukan). Secara sintaksis, operan kanan harus menjadi anggota (pengidentifikasi dari anggota yang ada) dari objek itu.

Contoh bagus dari kelebihan berlebihan dari operator panah adalah smart pointer. Ini adalah kelas yang membungkus pointer biasa, menambahkan lebih banyak fungsionalitas (kepemilikan unik objek dinamis atau penghitungan referensi). Pointer pintar membuat operator panah kelebihan beban, jadi Anda dapat menggunakannya untuk mengakses objek yang mendasari seperti halnya jika Anda menggunakan pointer biasa ke objek tersebut.


Jawaban 2:

Saya akan mengatakan Anda dengan kata-kata sederhana ...

Untuk mengakses anggota struktur, gunakan operator titik, dan

Untuk mengakses anggota struktur melalui pointer, gunakan operator panah.

Sebagai contoh, perhatikan struktur berikut ini ………

siswa sekolah {
  int regNo;
  nama char [25];
} std;

Untuk menetapkan nilai "suhail" ke nama anggota objek std, Anda akan menulis sesuatu sebagai berikut ... ..

strcpy (std.name, "suhail");

Jika ptr_std adalah pointer ke objek bertipe siswa, maka menugaskan nilai "suhail" ke nama anggota objek std, Anda harus menulis seperti ini ... ..

strcpy (ptr_std-> name, "suhail");

Jawaban 3:

Operator pointer adalah apa yang dikenal sebagai gula sintaksis: sesuatu yang tidak benar-benar diperlukan tetapi membuat program lebih mudah untuk mengetik dan membaca. Pernyataan

bidang p->

identik dengan

(* p) .field

jika p sebenarnya adalah pointer. Jika itu adalah objek, maka kompiler akan memanggil metode operator -> () pada objek sebagai gantinya.