Bagikan melalui


Gambaran Umum Fungsi Anggota

Fungsi anggota bersifat statis atau nonstatis. Perilaku fungsi anggota statis berbeda dari fungsi anggota lain karena fungsi anggota statis tidak memiliki argumen implisit this . Fungsi anggota nonstatis memiliki this penunjuk. Fungsi anggota, baik statis atau nonstatis, dapat didefinisikan baik di dalam atau di luar deklarasi kelas.

Jika fungsi anggota didefinisikan di dalam deklarasi kelas, fungsi tersebut diperlakukan sebagai fungsi sebaris, dan tidak perlu memenuhi syarat nama fungsi dengan nama kelasnya. Meskipun fungsi yang ditentukan di dalam deklarasi kelas sudah diperlakukan sebagai fungsi sebaris, Anda dapat menggunakan inline kata kunci untuk kode dokumen.

Contoh mendeklarasikan fungsi dalam deklarasi kelas mengikuti:

// overview_of_member_functions1.cpp
class Account
{
public:
    // Declare the member function Deposit within the declaration
    //  of class Account.
    double Deposit( double HowMuch )
    {
        balance += HowMuch;
        return balance;
    }
private:
    double balance;
};

int main()
{
}

Jika definisi fungsi anggota berada di luar deklarasi kelas, itu diperlakukan sebagai fungsi sebaris hanya jika secara eksplisit dinyatakan sebagai inline. Selain itu, nama fungsi dalam definisi harus memenuhi syarat dengan nama kelasnya menggunakan operator resolusi cakupan (::).

Contoh berikut identik dengan deklarasi kelas Accountsebelumnya , kecuali bahwa Deposit fungsi ditentukan di luar deklarasi kelas:

// overview_of_member_functions2.cpp
class Account
{
public:
    // Declare the member function Deposit but do not define it.
    double Deposit( double HowMuch );
private:
    double balance;
};

inline double Account::Deposit( double HowMuch )
{
    balance += HowMuch;
    return balance;
}

int main()
{
}

Catatan

Meskipun fungsi anggota dapat didefinisikan baik di dalam deklarasi kelas atau secara terpisah, tidak ada fungsi anggota yang dapat ditambahkan ke kelas setelah kelas ditentukan.

Kelas yang berisi fungsi anggota dapat memiliki banyak deklarasi, tetapi fungsi anggota itu sendiri hanya harus memiliki satu definisi dalam suatu program. Beberapa definisi menyebabkan pesan kesalahan pada waktu tautan. Jika kelas berisi definisi fungsi sebaris, definisi fungsi harus identik untuk mengamati aturan "satu definisi" ini.