Penjelasan Dan Cara Menggunakan Static Member Variable

Posted on   Maret 17, 2019   |   Last Modified   Maret 17, 2019
Static Member Variable

Penjelasan Static Member Variable

Static Member Variabel adalah member variabel yang menggunakan keyword static membuat member variabel tersebut bersifat dimiliki oleh semua object.

Berbeda seperti member variabel biasa, setiap object di buat dengan class tersebut maka member variabel akan berdiri sendiri di setiap object. karena itu, jika salah satu member variabel dari sebuah object diubah nilainya maka tidak akan mempengaruhi object lainnya yang menggunakan class yang sama.

Tapi di saat suatu member variabel menggunakan keyword static, dengan hal itu akan membuat member variabel tidak berdiri sendiri di setiap object. member variabel tersebut hanya akan ada satu dan akan dimiliki oleh class dan semua object yang menggunakan class tersebut. jadi jika melakukan perubahan nilai pada member variabel statis melalui class atau salah satu object maka akan mempengaruhi semua object yang menggunakan class tersebut.

Bentuk umum penulisan

static tipe_data identifier;

Contoh penulisan

class siswa {
public:
static int s_id ;
};

Di atas adalah contoh penulisan dari deklarasi static member variable di dalam public akses.

Deklarasi static member variable di atas masih belum sepenuhnya bisa digunakan, deklarasi static member variable di atas hanya menyatakan kepada compiler bahwa member variable s_id tersebut adalah static member variable.

Kita masih membutuhkan definisi dari static member variable untuk deklarasi yang kita telah didirikan di dalam class.

Contoh penulisan

int siswa :: s_id = 1 //Definisi dan Inisialisasi Static Member Variable

Di atas adalah contoh penulisan dari definsi dan inisialisasi static member variable, dilakukan dengan cukup menulis tipe data yang dipakai tanpa menggunakan static keyword di depan tipe data, selanjutnya menggunakan scope operator di antara nama class dan member variable.

Baca :   Penjelasan Member Initialization List

Definisi dan inisialisasi static member variable biasanya diletakan di luar class seperti halnya deklarasi global variable. definisi pada contoh di atas, kita juga dapat untuk tidak menyertakan inisialisasi, sifat static sebagai member variable masih sama seperti sifat static yang sebelumnya pernah penulis jelaskan di artikel sebelumnya. Static akan otomatis di inisialisasi menjadi 0 ketika tidak kita inisialisasi secara manual.

Contoh penulisan

int siswa::s_id; //Definisi tanpa inisialisasi

Kita juga dapat menginisialisasi static member variable di saat deklarasi static member variable di dalam class dan juga kita tidak membutuhkan untuk mendefinisi static member variable di luar class. Hal ini hanya akan terjadi jika static member variable merupakan konstanta.

Contoh penulisan

class siswa{
public:
    static const int s_id = 0;
};

Cara mengakses Static Member Variable

Static member variable hanya ada satu dan itu berlaku ke pada semua object yang menggunakan class tersebut, dan juga static member variable akan ada walaupun belum ada object yang dibuat dari class tersebut. static member variable dapat di akses menggunakan dua cara yaitu melalui object yang menggunakan class tersebut dan dapat melalui class langsung.

Untuk mengakses Static Member Variable melalui object adalah dengan menyertakan Member Access Operator . di antara nama object dan nama member variable.

Contoh penulisan Akses melalui Object

nama_object.s_id

Kita juga dapat mengakses langsung melalui class meskipun belum terjadinya <>instantiation. Untuk melakukanya kita membutuhkan Scope Resolution Operator :: di antara nama class dan nama member variable.

Contoh penulisan akses melalui class

nama_class::s_id

Saat deklarasi static member variable di dalam class kita juga dapat mengikut sertakan static member variable di dalam akses specifier private atau protected. Jika kita melakukan itu kita juga akan tetap membutuhkan definisi dari static di luar class dan tidak ada yang berbeda dalam melakukan definisi static member variable. hal yang berbeda hanya kita tidak bisa mengakses static member variable melalui object maupun class).

Baca :   Persiapan: tools yang dibutuhkan sebelum memulai belajar pemrograman C

Contoh program

#include <iostream>
#include <string>
using namespace std;

class siswa{
public:
    static int s_id;
    int id;
    string nama;

    void setID();
    void printAll();
    siswa(string pnama):nama(pnama){setID();}
};

int siswa::s_id=0;

void siswa::setID(){
    id = ++s_id;
}

void siswa::printAll(){
    cout<<"ID   = "<<id<<endl;
    cout<<"Nama = "<<nama<<endl;
    cout<<endl;
}

int main(){
    siswa dadi("Dadi family");
    siswa budi("Budi Dudi Dodi");
    siswa andi("Andi Dadi Loro");
    siswa william("Joko Will");

    dadi.printAll();
    budi.printAll();
    andi.printAll();
    william.printAll();
    return 0;
}


Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *