Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
A class atau struct terdiri dari anggotanya. Pekerjaan yang dilakukan kelas dilakukan oleh fungsi anggotanya. Status yang dipertahankan disimpan dalam anggota datanya. Inisialisasi anggota dilakukan oleh konstruktor, dan pekerjaan pembersihan seperti membebaskan memori dan melepaskan sumber daya dilakukan oleh destruktor. Di C++11 dan yang lebih baru, anggota data dapat (dan biasanya harus) diinisialisasi pada titik deklarasi.
Jenis anggota kelas
Daftar lengkap kategori anggota adalah sebagai berikut:
Fungsi anggota khusus.
Gambaran umum fungsi anggota.
Anggota data yang dapat diubah dan statis , termasuk jenis bawaan dan jenis yang ditentukan pengguna lainnya.
Operator
Deklarasi kelas berlapis dan.)
Bidang bit.
-
Catatan
Teman-teman disertakan dalam daftar sebelumnya karena mereka terkandung dalam deklarasi kelas. Namun, mereka bukan anggota kelas sejati, karena mereka tidak berada dalam cakupan kelas.
Contoh deklarasi kelas
Contoh berikut menunjukkan deklarasi kelas sederhana:
// TestRun.h
class TestRun
{
// Start member list.
// The class interface accessible to all callers.
public:
// Use compiler-generated default constructor:
TestRun() = default;
// Don't generate a copy constructor:
TestRun(const TestRun&) = delete;
TestRun(std::string name);
void DoSomething();
int Calculate(int a, double d);
virtual ~TestRun();
enum class State { Active, Suspended };
// Accessible to this class and derived classes only.
protected:
virtual void Initialize();
virtual void Suspend();
State GetState();
// Accessible to this class only.
private:
// Default brace-initialization of instance members:
State _state{ State::Suspended };
std::string _testName{ "" };
int _index{ 0 };
// Non-const static member:
static int _instances;
// End member list.
};
// Define and initialize static member.
int TestRun::_instances{ 0 };
Aksesibilitas anggota
Anggota kelas dideklarasikan dalam daftar anggota. Daftar anggota kelas dapat dibagi menjadi sejumlah privatebagian , protected dan public menggunakan kata kunci yang dikenal sebagai penentu akses. Titik dua : harus mengikuti penentu akses. Bagian-bagian ini tidak harus berdampingan; artinya, salah satu kata kunci ini mungkin muncul beberapa kali dalam daftar anggota. Kata kunci menunjuk akses semua anggota hingga penentu akses berikutnya atau kurung kurawal penutup. Untuk informasi selengkapnya, lihat Kontrol akses anggota (C++).
Anggota statis
Anggota data dapat dinyatakan sebagai statis, yang berarti semua objek kelas memiliki akses ke salinan yang sama. Fungsi anggota dapat dinyatakan sebagai statis, dalam hal ini hanya dapat mengakses anggota data statis kelas (dan tidak this memiliki pointer). Untuk informasi selengkapnya, lihat Anggota Data Statis.
Fungsi anggota khusus
Fungsi anggota khusus adalah fungsi yang disediakan pengkompilasi secara otomatis jika Anda tidak menentukannya dalam kode sumber Anda.
Konstruktor default
Salin konstruktor
(C++11) Memindahkan konstruktor
Menyalin operator penugasan
(C++11) Pindahkan operator penugasan
Destruktor
Untuk informasi selengkapnya, lihat Fungsi anggota khusus.
Inisialisasi anggota yang bijaksana
Di C++11 dan yang lebih baru, deklarator anggota non-statis dapat berisi penginisialisasi.
class CanInit
{
public:
long num {7}; // OK in C++11
int k = 9; // OK in C++11
static int i = 9; // Error: must be defined and initialized
// outside of class declaration.
// initializes num to 7 and k to 9
CanInit(){}
// overwrites original initialized value of num:
CanInit(int val) : num(val) {}
};
int main()
{
}
Jika anggota diberi nilai dalam konstruktor, nilai tersebut menimpa nilai yang ditetapkan saat deklarasi.
Hanya ada satu salinan bersama anggota data statis untuk semua objek dari jenis kelas tertentu. Anggota data statis harus ditentukan dan dapat diinisialisasi pada cakupan file. Untuk informasi selengkapnya tentang anggota data statis, lihat Anggota data statis. Contoh berikut menunjukkan cara menginisialisasi anggota data statis:
// class_members2.cpp
class CanInit2
{
public:
CanInit2() {} // Initializes num to 7 when new objects of type
// CanInit are created.
long num {7};
static int i;
static int j;
};
// At file scope:
// i is defined at file scope and initialized to 15.
// The initializer is evaluated in the scope of CanInit.
int CanInit2::i = 15;
// The right side of the initializer is in the scope
// of the object being initialized
int CanInit2::j = i;
Catatan
Nama kelas, CanInit2, harus didahului i untuk menentukan bahwa yang i didefinisikan adalah anggota kelas CanInit2.