dilindungi (C++)
Sintaks
protected:
[member-list]
protected base-class
Keterangan
Kata protected
kunci menentukan akses ke anggota kelas dalam daftar anggota hingga penentu akses berikutnya (public
atau private
) atau akhir definisi kelas. Anggota kelas yang dinyatakan sebagai protected
hanya dapat digunakan oleh berikut:
Fungsi anggota kelas yang awalnya mendeklarasikan anggota ini.
Teman-teman kelas yang awalnya mendeklarasikan anggota ini.
Kelas yang berasal dari akses publik atau terlindungi dari kelas yang awalnya mendeklarasikan anggota ini.
Kelas turunan pribadi langsung yang juga memiliki akses privat ke anggota yang dilindungi.
Saat mendahului nama kelas dasar, protected
kata kunci menentukan bahwa anggota publik dan terlindungi dari kelas dasar adalah anggota yang dilindungi dari kelas turunannya.
Anggota yang dilindungi tidak swasta sebagai private
anggota, yang hanya dapat diakses oleh anggota kelas tempat mereka dideklarasikan tetapi mereka tidak sebagai publik sebagai public
anggota, yang dapat diakses dalam fungsi apa pun.
Anggota yang dilindungi yang juga dinyatakan sebagai static
dapat diakses oleh setiap fungsi teman atau anggota dari kelas turunan. Anggota yang dilindungi yang tidak dinyatakan sebagai static
dapat diakses oleh teman dan anggota fungsi di kelas turunan hanya melalui penunjuk ke, referensi ke, atau objek kelas turunan.
Untuk informasi terkait, lihat tabel teman, publik, privat, dan akses anggota di Mengontrol Akses ke Anggota Kelas.
/clr Spesifik
Dalam jenis CLR, kata kunci penentu akses C++ (public
, private
, dan protected
) dapat memengaruhi visibilitas jenis dan metode sehubungan dengan rakitan. Untuk informasi selengkapnya, lihat Kontrol Akses Anggota.
Catatan
File yang dikompilasi dengan /LN tidak terpengaruh oleh perilaku ini. Dalam hal ini, semua kelas terkelola (publik atau privat) akan terlihat.
END /clr Spesifik
Contoh
// keyword_protected.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class X {
public:
void setProtMemb( int i ) { m_protMemb = i; }
void Display() { cout << m_protMemb << endl; }
protected:
int m_protMemb;
void Protfunc() { cout << "\nAccess allowed\n"; }
} x;
class Y : public X {
public:
void useProtfunc() { Protfunc(); }
} y;
int main() {
// x.m_protMemb; error, m_protMemb is protected
x.setProtMemb( 0 ); // OK, uses public access function
x.Display();
y.setProtMemb( 5 ); // OK, uses public access function
y.Display();
// x.Protfunc(); error, Protfunc() is protected
y.useProtfunc(); // OK, uses public access function
// in the derived class
}
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk