C++

Penentu Akses C++

Penentu Akses C++
Dalam C++, kelas adalah sekumpulan variabel dan fungsi yang telah dikonfigurasi untuk bekerja bersama. Ketika variabel kelas diberi nilai, sebuah objek diperoleh. Objek memiliki variabel dan fungsi yang sama dengan kelas, tetapi kali ini, variabel memiliki nilai. Banyak objek dapat dibuat dari satu kelas. Satu objek berbeda dari objek lain sesuai dengan kumpulan nilai yang berbeda yang ditetapkan ke variabel objek lain. Membuat objek dari kelas dikatakan membuat objek. Bahkan jika dua objek yang berbeda memiliki nilai yang sama untuk variabel mereka, objek ini adalah entitas yang berbeda, diidentifikasi dengan nama yang berbeda dalam program. Variabel untuk objek dan kelas yang sesuai disebut anggota data data. Fungsi dari suatu objek dan kelas yang sesuai disebut fungsi anggota. Anggota data dan fungsi anggota disebut anggota.

Kata akses berarti membaca atau mengubah nilai suatu variabel, dan juga berarti menggunakan suatu fungsi. Penentu akses C++ adalah kata-kata, "pribadi," "dilindungi," dan "publik.Mereka memutuskan apakah anggota dapat mengakses anggota lain dari kelasnya, atau jika fungsi atau operator di luar kelas dan bukan milik kelas dapat mengakses anggota kelas mana pun. Mereka juga memutuskan apakah anggota kelas turunan (anak) dapat mengakses anggota kelas induk.

Pengetahuan dasar C++ diperlukan untuk memahami artikel ini dan untuk menguji kode yang disediakan.

Isi Artikel

Penentu Publik dan Pribadi

Kelas
Setiap anggota kelas dapat mengakses setiap anggota lain dari kelas yang sama, independen yang diberi label "publik" atau "pribadi".” Perhatikan program berikut:

#termasuk
menggunakan namespace std;
kelas TheCla

pribadi:
int nomor1;
int nomor2;
publik:
Kla(int n1, int n2)

angka1 = n1; bilangan2 = n2;

metode int()

kembali nomor1;

;
int utama()

TheCla obj(10, 20);
int no2 = obj.metode();
cout<//int no1 = obj.nomor1;
kembali 0;

Keluarannya 10. Anggota pribadi adalah num1 dan num2. Anggota publik adalah TheCla() dan  method(). Perhatikan bahwa TheCla() adalah fungsi konstruktor yang menginisialisasi variabel yang diinginkan. Wilayah penentu akses dimulai dari labelnya hingga akhir deskripsi kelas (definisi) atau ke awal penentu akses lain.

Dalam fungsi main(), pernyataan pertama adalah instantiasi yang melibatkan fungsi konstruktor, yang menginisialisasi num1 dan num2. Pernyataan berikutnya memanggil anggota publik, metode(), dari kelas.

Sekarang, dalam deskripsi kelas (definisi), fungsi anggota publik, TheCla(), mengakses anggota pribadi, num1 dan num2. Selain itu, fungsi anggota publik, metode(), mengakses anggota pribadi,  num1. Setiap anggota dalam deskripsi kelas dapat mengakses anggota lain dalam deskripsi kelas yang sama; tidak masalah anggota mana yang pribadi atau publik.

Namun, fungsi atau operator yang tidak dideklarasikan dalam deskripsi kelas dan di luar deskripsi kelas hanya dapat mengakses anggota publik kelas tersebut. Fungsi main(), misalnya, adalah fungsi yang dideklarasikan di luar deskripsi kelas. Itu hanya dapat mengakses metode() dan anggota publik TheCla()(). Di dalam fungsi main(), fungsi TheCla() adalah obj(10, 20).

Fungsi luar atau operator luar, seperti fungsi main(), tidak dapat mengakses salah satu anggota pribadi kelas, seperti num1 atau num2. Hapus indikator komentar, //, dari pernyataan last-but-one di main(). Jika Anda mencoba untuk mengkompilasi program, perhatikan bahwa program tidak akan dikompilasi, memberikan pesan kesalahan.

Penentu Default
Penentu default untuk kelas adalah "pribadi".Jadi, deskripsi kelas di atas sama dengan deskripsi berikut, pribadi, tetapi tanpa specifier:

kelas TheCla

int nomor1;
int angka2;
publik:
Kla(int n1, int n2)

angka1 = n1; bilangan2 = n2;

metode int()

kembali nomor1;

;

Catatan: label penentu akses dimulai dengan penentu, dan kemudian diikuti oleh titik dua.

Penentu yang Dilindungi

Dalam deskripsi kelas, dan dari fungsi luar atau operator luar, specifier yang dilindungi sama dengan specifier pribadi. Sekarang, ganti specifier pribadi dalam program di atas dengan specifier, lindungi, dan hapus indikator komentar, //, dari pernyataan last-but-one di fungsi main(). Jika Anda mencoba untuk mengkompilasi program, perhatikan bahwa program tidak akan dikompilasi, memberikan pesan kesalahan.

Masalah specifier yang dilindungi muncul ketika anggota kelas turunan (diwariskan) harus mengakses anggota kelas dasar (induk).

Kelas Turunan Publik dengan Anggota Publik
Perhatikan program berikut:

#termasuk
menggunakan namespace std;
kelas TheCla

publik:
int angka1 = 10;
terlindung:
int bilangan2 = 20;
pribadi:
int angka3 = 30;
;
kelas ChildCla : TheCla publik

publik:
int metode1()

kembali nomor1;

int metode2()

kembali nomor2;

/*int metode3()

kembali nomor3;
*/
;
int utama()

ChildCla childObj;
int no1 = childObj.metode1();
cout<int no2 = childObj.metode2();
cout<kembali 0;

Outputnya adalah:
10
20

Di kelas dasar, num1 adalah publik, num2 dilindungi, dan num3 adalah pribadi. Di kelas turunan, semua fungsi anggota bersifat publik. Fungsi pertama, method1(), mengakses anggota data publik, num1. Fungsi kedua, method2(), mengakses anggota data yang dilindungi, num2. Fungsi ketiga, method3(), meskipun saat ini dikomentari, harus mengakses anggota data pribadi, num3.

Kelas turunan tidak dideklarasikan tanpa penentu akses (publik, dilindungi, atau pribadi). Di atas, kelas turunan dideklarasikan dengan specifier publik, yaitu:

kelas ChildCla : TheCla publik

Sekarang batalkan komentar definisi fungsi anggota ketiga di kelas turunan. Jika Anda mencoba untuk mengkompilasi program, perhatikan bahwa itu tidak akan dikompilasi, memberikan pesan kesalahan.

Catatan: Ketika seluruh kelas turunan dideklarasikan publik, anggotanya tidak dapat mengakses anggota pribadi dari kelas dasar. Namun, anggotanya dapat mengakses anggota kelas dasar publik dan yang dilindungi. Program di atas menggambarkan hal ini.

Namun, perhatikan bahwa anggota publik dari kelas turunan publik dapat mengakses anggota kelas dasar yang dilindungi.

Penentu Kelas Turunan dan Penentu Anggota

Kelas Turunan yang Dilindungi dengan Anggota Publik
Ganti specifier “public” dengan “protected” dalam deklarasi kelas turunan di atas, sebagai berikut:

kelas ChildCla : melindungi TheCla

Kompilasi dan jalankan program dan perhatikan bahwa hasilnya sama seperti sebelumnya.

Jadi, ketika seluruh kelas turunan dinyatakan terlindungi, anggotanya tidak dapat mengakses anggota pribadi dari kelas dasar. Namun, anggotanya dapat mengakses anggota kelas dasar publik dan yang dilindungi. Ini sama seperti ketika kelas turunan dideklarasikan publik.

Catatan: anggota yang dilindungi dari kelas turunan publik dapat mengakses anggota kelas dasar yang dilindungi.

Kelas Turunan Privat dengan Anggota Publik
Ganti specifier “protected” dengan “private” dalam deklarasi kelas turunan di atas, sebagai berikut:

kelas ChildCla : TheCla pribadi

Kompilasi dan jalankan program dan perhatikan bahwa hasilnya sama seperti sebelumnya.

Jadi, ketika seluruh kelas turunan dideklarasikan sebagai pribadi, anggotanya tidak dapat mengakses anggota pribadi dari kelas dasar. Namun, anggotanya dapat mengakses anggota kelas dasar publik dan yang dilindungi. Ini sama seperti ketika kelas turunan dinyatakan terlindungi atau publik.

Kelas Turunan Publik dengan Anggota Terlindungi
Ketik, kompilasi, dan jalankan program berikut, di mana seluruh kelas turunan dilindungi, dan anggotanya juga dilindungi. Beberapa segmen kode adalah sebagai berikut:

#termasuk
menggunakan namespace std;
kelas TheCla

publik:
int angka1 = 10;
terlindung:
int bilangan2 = 20;
pribadi:
int angka3 = 30;
;
kelas ChildCla : TheCla publik

terlindung:
int metode1()

kembali nomor1;

int metode2()

kembali nomor2;

/*int metode3()

kembali nomor3;
*/
;
int utama()

/*ChildCla childObj;
int no1 = childObj.metode1();
cout</*int no2 = childObj.metode2();
cout<kembali 0;

Program berjalan sebagaimana adanya. Tidak ada output, dan seharusnya tidak ada output, berdasarkan bagaimana program telah diketik.

Sekarang, batalkan komentar definisi fungsi, method3(), di kelas turunan. Jika Anda mencoba untuk mengkompilasi program, perhatikan bahwa itu tidak akan dikompilasi, memberikan pesan kesalahan. Ini berarti bahwa anggota pribadi tidak dapat diakses dari fungsi luar, operator luar, atau kelas turunan. Ini adalah kesimpulan yang sama seperti yang disimpulkan di atas, mengenai akses ke anggota pribadi.

Catatan: anggota yang dilindungi dari kelas turunan yang dilindungi dapat mengakses anggota yang dilindungi dari kelas dasar.

Sekarang, letakkan kembali komentar di kelas turunan dan batalkan komentar pada segmen kode pertama di fungsi main(). Jika Anda mencoba mengkompilasi program, perhatikan bahwa program tidak akan dikompilasi karena segmen kode pertama dalam fungsi main(). Efek ini bukan hal baru. Terlepas dari kelas turunan, fungsi luar, dan operator luar, anggota yang dilindungi dan pribadi dari kelas (dasar atau turunan) memiliki specifier yang sama, pribadi. Fungsi main() melihat anggota yang dilindungi dari kelas apa pun, baik basis atau turunan, pada specifier yang sama, pribadi, dan dilarang mengaksesnya.

Jika segmen kode kedua dari fungsi main() tidak dikomentari, penjelasan yang sama akan berlaku. Artinya, fungsi main() tidak akan dapat mengakses anggota yang dilindungi atau pribadi dari kelas turunan atau kelas dasar. Ini tidak tergantung pada apakah anggota yang dilindungi dari kelas turunan dapat mengakses anggota yang dilindungi dari kelas dasar.

Kelas Turunan yang Dilindungi dengan Anggota yang Dilindungi
Ganti specifier “public” dengan “protected” dalam deklarasi kelas turunan di atas, sebagai berikut:

kelas ChildCla : melindungi TheCla

Masukkan komentar segmen kode kembali ke fungsi main(), jika ini belum dilakukan. Kompilasi dan jalankan program dan perhatikan bahwa hasilnya seperti sebelumnya.

Kelas Turunan Pribadi dengan Anggota Terlindungi
Ganti specifier “protected” dengan “private” dalam deklarasi kelas turunan di atas, sebagai berikut:

class ChildCla : private TheCla

Kompilasi dan jalankan program dan perhatikan bahwa hasilnya akan seperti sebelumnya.

Kelas Turunan Publik dengan Anggota Pribadi
Ganti specifier “private” dengan “public” dalam deklarasi kelas turunan di atas, sebagai berikut:

kelas ChildCla : TheCla publik

Jadikan anggota kelas turunan menjadi pribadi. Kompilasi dan jalankan program. Hasilnya tidak berbeda dengan kasus “Kelas Turunan Publik dengan Anggota Terlindungi”.

Kelas Turunan yang Dilindungi dengan Anggota Pribadi
Ganti specifier “public” dengan “protected” dalam deklarasi kelas turunan di atas, sebagai berikut:

kelas ChildCla : melindungi TheCla

Kompilasi dan jalankan program. Hasil ini tidak berbeda dengan kasus “Kelas Turunan yang Dilindungi dengan Anggota yang Dilindungi”.

Kelas Turunan Privat dengan Anggota Privat
Ganti specifier “protected” dengan “private” dalam deklarasi kelas turunan di atas, sebagai berikut:

kelas ChildCla : TheCla pribadi

Kompilasi dan jalankan program. Hasil ini tidak berbeda dengan kasus “Kelas Turunan Pribadi dengan Anggota Terlindungi”.

Kesimpulan

Penentu akses C++ adalah kata-kata "pribadi", "dilindungi", dan "publik".Mereka memutuskan akses untuk anggota kelas. Wilayah penentu akses dimulai dari labelnya, hingga akhir deskripsi kelas (definisi), atau ke awal penentu akses lain. Setiap anggota kelas dapat mengakses anggota lain dari kelas yang sama. Anggota pribadi dari suatu kelas tidak dapat diakses oleh fungsi luar apa pun, operator luar mana pun, atau kelas turunan.

Anggota kelas dasar harus dibuat terlindungi sehingga anggota pribadi kelas dasar dapat diakses oleh anggota kelas turunan. Anggota kelas dasar yang dilindungi ini dipandang sebagai anggota pribadi dari kelas dasar oleh fungsi luar atau operator luar.

Anggota publik dari suatu kelas dapat diakses oleh fungsi luar apa pun, operator luar apa pun, atau kelas turunan.

Dengan tidak adanya penentu akses di kelas, penentu pribadi diasumsikan private. Artinya, penentu akses default adalah pribadi.

Referensi yang Digunakan dalam Karya Ini

  • Alireza Ebrahimi, WARISAN: DAPAT DIGUNAKAN KEMBALI DAN DIPERPANJANG
  • S. Malik, Struktur Data Menggunakan C++ Edisi ke-2
Cara Menggunakan Cheat Engine GameConqueror di Linux
Artikel ini mencakup panduan tentang menggunakan mesin cheat GameConqueror di Linux. Banyak pengguna yang bermain game di Windows sering menggunakan a...
Emulator Konsol Game Terbaik untuk Linux
Artikel ini akan mencantumkan perangkat lunak emulasi konsol game populer yang tersedia untuk Linux. Emulasi adalah lapisan kompatibilitas perangkat l...
Distro Linux Terbaik untuk Gaming pada tahun 2021
Sistem operasi Linux telah berkembang jauh dari tampilan aslinya, sederhana, berbasis server. OS ini telah sangat meningkat dalam beberapa tahun terak...