C ++

Penentu Akses C ++

Penentu Akses C ++
Dalam C ++, kelas adalah sekumpulan pemboleh ubah dan fungsi yang telah dikonfigurasi untuk bekerjasama. Apabila pemboleh ubah kelas diberi nilai, objek diperoleh. Objek mempunyai pemboleh ubah dan fungsi yang sama seperti kelas, tetapi kali ini, pemboleh ubah mempunyai nilai. Banyak objek boleh dibuat dari satu kelas. Satu objek berbeza dari objek lain mengikut set nilai yang diberikan kepada pemboleh ubah objek lain. Membuat objek dari kelas dikatakan sebagai objek. Walaupun dua objek yang berbeza mempunyai nilai yang sama untuk pemboleh ubahnya, objek ini adalah entiti yang berbeza, yang dikenal pasti dengan nama yang berbeza dalam program ini. Pemboleh ubah untuk objek dan kelasnya yang sesuai dipanggil anggota data. Fungsi objek dan kelasnya yang sesuai disebut fungsi anggota. Anggota data dan fungsi anggota dipanggil ahli.

Akses perkataan bermaksud membaca atau mengubah nilai pemboleh ubah, dan ini juga bermaksud menggunakan fungsi. Penentu akses C ++ adalah kata-kata, "peribadi", "dilindungi", dan "umum."Mereka memutuskan sama ada seorang anggota boleh mengakses ahli kelasnya yang lain, atau jika seorang anggota atau kelas yang berada di luar kelas atau yang tidak termasuk dalam kelas boleh mengakses mana-mana ahli kelasnya. Mereka juga memutuskan sama ada ahli kelas turunan (anak) boleh mengakses ahli kelas induk.

Pengetahuan asas mengenai C ++ diperlukan untuk memahami artikel ini dan untuk menguji kod yang disediakan.

Kandungan Artikel

Penentu Awam dan Swasta

Kelas
Mana-mana ahli kelas boleh mengakses mana-mana ahli kelas yang sama, yang bebas daripadanya dilabel "awam" atau "peribadi.Pertimbangkan program berikut:

#sertakan
menggunakan ruang nama std;
kelas TheCla

peribadi:
int num1;
int num2;
awam:
TheCla (int n1, int n2)

num1 = n1; num2 = n2;

kaedah int ()

pulangkan nombor1;

;
int utama ()

TheCla obj (10, 20);
int no2 = obj.kaedah ();
cout<// int no1 = obj.bilangan1;
pulangan 0;

Keluarannya adalah 10. Ahli persendirian adalah num1 dan num2. Orang awam adalah TheCla () dan kaedah (). Perhatikan bahawa TheCla () adalah fungsi konstruktor yang memulakan pemboleh ubah minat. Kawasan penentu akses bermula dari labelnya hingga akhir deskripsi kelas (definisi) atau hingga permulaan penentu akses lain.

Dalam fungsi utama (), pernyataan pertama adalah contoh yang melibatkan fungsi konstruktor, yang menginisialisasi num1 dan num2. Pernyataan seterusnya memanggil anggota awam, kaedah (), kelas.

Sekarang, dalam keterangan kelas (definisi), fungsi anggota awam, TheCla (), mengakses ahli persendirian, num1 dan num2. Juga, fungsi anggota awam, kaedah (), mengakses anggota persendirian, num1. Mana-mana ahli dalam keterangan kelas dapat mengakses mana-mana ahli lain dalam keterangan kelas yang sama; tidak kira ahli mana yang bersifat peribadi atau awam.

Walau bagaimanapun, fungsi atau pengendali yang tidak dinyatakan dalam keterangan kelas dan di luar keterangan kelas hanya dapat mengakses anggota kelas awam. Fungsi utama (), misalnya, adalah fungsi yang dinyatakan di luar keterangan kelas. Ia hanya dapat mengakses kaedah () dan anggota awam TheCla (). Di dalam fungsi utama (), fungsi TheCla () adalah obj (10, 20).

Fungsi luar atau pengendali luar, seperti fungsi utama (), tidak dapat mengakses mana-mana anggota peribadi kelas, seperti num1 atau num2. Keluarkan penunjuk komen, //, dari pernyataan terakhir-tetapi-satu di utama (). Sekiranya anda cuba menyusun program, perhatikan bahawa program tersebut tidak akan menyusun, memberikan mesej ralat.

Penentu Lalai
Penentu lalai untuk kelas adalah "peribadi."Jadi, keterangan kelas di atas adalah sama dengan keterangan berikut, peribadi, tetapi tanpa penentu:

kelas TheCla

int num1;
int num2;
awam:
TheCla (int n1, int n2)

num1 = n1; num2 = n2;

kaedah int ()

pulangkan nombor1;

;

Nota: label penentu akses bermula dengan penentu, dan kemudian diikuti dengan titik dua.

Penentu yang Dilindungi

Dalam keterangan kelas, dan dari fungsi luar atau operator luar, penentu yang dilindungi adalah sama dengan penentu peribadi. Sekarang, ganti penentu peribadi dalam program di atas dengan penentu, lindungi, dan hapus penunjuk komen, //, dari pernyataan terakhir-tetapi-satu dalam fungsi utama (). Sekiranya anda cuba menyusun program, perhatikan bahawa program tersebut tidak akan menyusun, memberikan mesej ralat.

Masalah penentu yang dilindungi muncul apabila anggota kelas yang diturunkan (diwarisi) mesti mengakses ahli kelas asas (induk).

Kelas Berasal Awam dengan Anggota Awam
Pertimbangkan program berikut:

#sertakan
menggunakan ruang nama std;
kelas TheCla

awam:
int num1 = 10;
dilindungi:
int num2 = 20;
peribadi:
int num3 = 30;
;
kelas ChildCla: awam TheCla

awam:
kaedah int1 ()

pulangkan nombor1;

kaedah int2 ()

pulangkan nombor2;

/ * kaedah int3 ()

pulangkan nombor3;
* /
;
int utama ()

ChildCla childObj;
int no1 = childObj.kaedah1 ();
cout<int no2 = childObj.kaedah2 ();
cout<pulangan 0;

Keluarannya adalah:
10
20

Di kelas asas, num1 bersifat umum, num2 dilindungi, dan num3 bersifat peribadi. Di kelas turunan, semua fungsi anggota adalah umum. Fungsi pertama, kaedah1 (), mengakses anggota data awam, num1. Fungsi kedua, kaedah2 (), mengakses anggota data yang dilindungi, num2. Fungsi ketiga, kaedah3 (), walaupun saat ini dikomentari, harus mengakses anggota data peribadi, num3.

Kelas turunan tidak dinyatakan tanpa penentu akses (awam, dilindungi, atau peribadi). Di atas, kelas yang diturunkan dinyatakan dengan penentu umum, iaitu:

kelas ChildCla: public TheCla

Sekarang hapus komen definisi fungsi anggota ketiga di kelas turunan. Sekiranya anda cuba menyusun program, perhatikan bahawa program itu tidak akan disusun, memberikan mesej ralat.

Nota: Apabila keseluruhan kelas turunan diisytiharkan sebagai umum, anggotanya tidak dapat mengakses anggota peribadi kelas asas. Bagaimanapun, anggotanya dapat mengakses orang awam dan anggota kelas dasar yang dilindungi. Program di atas menggambarkan perkara ini.

Walau bagaimanapun, perhatikan bahawa anggota awam kelas turunan awam boleh mengakses anggota kelas asas yang dilindungi.

Penentu Kelas Berasal dan Penentu Ahli

Kelas Berasal yang Dilindungi dengan Anggota Awam
Ganti penentu "umum" dengan "dilindungi" dalam deklarasi kelas turunan di atas, seperti berikut:

kelas ChildCla: dilindungi TheCla

Susun dan jalankan program dan perhatikan bahawa hasilnya sama seperti sebelumnya.

Oleh itu, apabila keseluruhan kelas turunan dinyatakan dilindungi, anggotanya tidak dapat mengakses anggota peribadi kelas asas. Bagaimanapun, anggotanya dapat mengakses orang awam dan anggota kelas dasar yang dilindungi. Ini sama seperti ketika kelas turunan diisytiharkan untuk umum.

Nota: anggota kelas dilindungi awam yang dilindungi boleh mengakses anggota kelas asas yang dilindungi.

Kelas Berasal Swasta dengan Anggota Awam
Ganti penentu "dilindungi" dengan "privat" dalam deklarasi kelas turunan di atas, seperti berikut:

kelas ChildCla: TheCla peribadi

Susun dan jalankan program dan perhatikan bahawa hasilnya sama seperti sebelumnya.

Oleh itu, apabila keseluruhan kelas turunan diisytiharkan sebagai peribadi, ahli-ahlinya tidak dapat mengakses anggota peribadi kelas asas. Bagaimanapun, anggotanya dapat mengakses orang awam dan anggota kelas dasar yang dilindungi. Ini sama seperti ketika kelas turunan dinyatakan dilindungi atau umum.

Kelas Berasal dari Orang ramai dengan Anggota yang Dilindungi
Ketik, kompilasi, dan jalankan program berikut, di mana seluruh kelas turunan dilindungi, dan anggotanya juga dilindungi. Beberapa segmen kod adalah seperti berikut:

#sertakan
menggunakan ruang nama std;
kelas TheCla

awam:
int num1 = 10;
dilindungi:
int num2 = 20;
peribadi:
int num3 = 30;
;
kelas ChildCla: awam TheCla

dilindungi:
kaedah int1 ()

pulangkan nombor1;

kaedah int2 ()

pulangkan nombor2;

/ * kaedah int3 ()

pulangkan nombor3;
* /
;
int utama ()

/ * ChildCla childObj;
int no1 = childObj.kaedah1 ();
cout</ * int no2 = childObj.kaedah2 ();
cout<pulangan 0;

Program ini berjalan seperti sedia kala. Tidak ada output, dan tidak seharusnya ada output, berdasarkan bagaimana program telah diketik.

Sekarang, hapus komen definisi fungsi, kaedah3 (), di kelas turunan. Sekiranya anda cuba menyusun program, perhatikan bahawa program itu tidak akan disusun, memberikan mesej ralat. Ini bermaksud bahawa anggota peribadi tidak dapat diakses dari fungsi luar, pengendali luar, atau kelas turunan. Ini adalah kesimpulan yang sama seperti yang disimpulkan di atas, mengenai akses kepada anggota persendirian.

Nota: anggota kelas perlindungan yang dilindungi boleh mengakses anggota kelas asas yang dilindungi.

Sekarang, masukkan semula komen di kelas yang berasal dan hapus komen segmen kod pertama dalam fungsi utama (). Sekiranya anda cuba menyusun program, perhatikan bahawa program tidak akan menyusun kerana segmen kod pertama dalam fungsi utama (). Kesan ini bukanlah perkara baru. Selain dari kelas turunan, fungsi luar, dan pengendali luar, anggota dilindungi dan swasta dari kelas (asas atau turunan) adalah penentu yang sama, peribadi. Fungsi utama () melihat anggota yang dilindungi dari mana-mana kelas, sama ada asas atau turunan, sebagai penentu yang sama, peribadi, dan dilarang mengaksesnya.

Sekiranya segmen kod kedua fungsi utama () tidak dikomentari, penjelasan yang sama akan berlaku. Maksudnya, fungsi utama () tidak akan dapat mengakses anggota dilindungi atau peribadi kelas turunan atau kelas asas. Ini tidak bergantung kepada sama ada anggota kelas yang dilindungi boleh mengakses anggota kelas asas yang dilindungi.

Kelas Berasal yang Dilindungi dengan Anggota yang Dilindungi
Ganti penentu "umum" dengan "dilindungi" dalam deklarasi kelas turunan di atas, seperti berikut:

kelas ChildCla: dilindungi TheCla

Masukkan komen segmen kod kembali ke fungsi utama (), jika ini belum dilakukan. Susun dan jalankan program dan perhatikan bahawa hasilnya seperti sebelumnya.

Kelas Berasal Persendirian dengan Anggota yang Dilindungi
Ganti penentu "dilindungi" dengan "privat" dalam deklarasi kelas turunan di atas, seperti berikut:

kelas ChildCla: TheCla peribadi

Susun dan jalankan program dan perhatikan bahawa hasilnya akan seperti sebelumnya.

Kelas Berasal dari Umum dengan Ahli Persendirian
Ganti penentu "peribadi" dengan "umum" dalam deklarasi kelas turunan di atas, seperti berikut:

kelas ChildCla: public TheCla

Jadikan ahli kelas yang berasal menjadi peribadi. Menyusun dan menjalankan program. Hasilnya tidak berbeza dengan kes "Kelas Berasal Umum dengan Anggota yang Dilindungi".

Kelas Berasal yang Dilindungi dengan Ahli Swasta
Ganti penentu "umum" dengan "dilindungi" dalam deklarasi kelas turunan di atas, seperti berikut:

kelas ChildCla: dilindungi TheCla

Menyusun dan menjalankan program. Hasil ini tidak berbeza dengan kes "Kelas Berasal yang Dilindungi dengan Anggota yang Dilindungi".

Kelas Berasal Persendirian dengan Ahli Peribadi
Ganti penentu "dilindungi" dengan "privat" dalam deklarasi kelas turunan di atas, seperti berikut:

kelas ChildCla: TheCla peribadi

Menyusun dan menjalankan program. Hasil ini tidak berbeza dengan kes "Kelas Berasal Swasta dengan Anggota yang Dilindungi".

Kesimpulannya

Penentu akses C ++ adalah kata-kata "peribadi", "dilindungi" dan "umum."Mereka memutuskan akses untuk ahli kelas. Kawasan penentu akses bermula dari labelnya, hingga akhir deskripsi kelas (definisi), atau hingga permulaan penentu akses lain. Mana-mana ahli kelas boleh mengakses mana-mana ahli kelas yang sama. Anggota peribadi kelas tidak dapat diakses oleh fungsi luar mana pun, pengendali luar, atau kelas turunan.

Anggota kelas asas mesti dilindungi supaya anggota peribadi kelas asas dapat diakses oleh anggota kelas asal. Anggota kelas asas yang dilindungi ini dilihat sebagai anggota peribadi kelas asas oleh fungsi luar atau pengendali luar.

Anggota awam kelas boleh diakses oleh mana-mana fungsi luar, mana-mana pengendali luar, atau kelas yang berasal.

Sekiranya tidak ada penentu akses dalam kelas, penentu peribadi dianggap. Iaitu, penentu akses lalai adalah peribadi.

Rujukan yang Digunakan dalam Karya Ini

  • Alireza Ebrahimi, WARISAN: KEPERLUAN DAN KELUARGA
  • S. Malik, Struktur Data Menggunakan C ++ Edisi Ke-2
Butang tetikus tengah tidak berfungsi pada Windows 10
The butang tetikus tengah membantu anda menelusuri halaman web dan skrin yang panjang dengan banyak data. Sekiranya ia berhenti, anda akan menggunakan...
Cara menukar butang tetikus Kiri & Kanan pada PC Windows 10
Sudah menjadi kebiasaan bahawa semua peranti tetikus komputer dirancang secara ergonomik untuk pengguna tangan kanan. Tetapi ada peranti tetikus yang ...
Tiru klik Tetikus dengan melayang menggunakan Mouse Tanpa Klik di Windows 10
Menggunakan tetikus atau papan kekunci dalam keadaan salah penggunaan berlebihan boleh menyebabkan banyak masalah kesihatan, termasuk ketegangan, sind...