Bukan hanya variabel dan member variabel saja yang dapat menggunakan keyword static tapi juga Member Function. jika pada member function biasa setiap memberfunction akan dimiliki oleh masing-masing object.
Penjelasan Static Member Function
Static Member Function adalah Member function yang menggunakan keyword static yang akan bersifat dimiliki oleh semua object termasuk class tersebut. member function tersebut akan hanya ada satu dan bisa di gunakan di semua object yang menggunakan class tersebut. dan juga static member function akan ada meskipun belum ada instance dari class.
Bentuk umum penulisan
static tipe_data nama_function(parameters…){ //Definsi.. }
Contoh penulisan
class siswa{ private : static int s_id; public : static int getS_id(){return s_id;} }; Int siswa::s_id =0;
Cara Mengakses Static Member Function
Untuk mengakses static member function memilki dua cara sama seperti kita melakunya pada static member variable, yang pertama kita bisa melakukanya melalui object, dengan menambahkan Member Akses Operator .
di antara nama object dan nama member.
Contoh penulisan Akses Melalui Object
nama_object.getS_id();
di setiap object akan memiliki static member function yang sama karena static member function hanya ada satu. cara kedua adalah kita dapat mengakses melalui nama dari class langsung dengan menambahkan tanda Scope Resolution Operator ( :: ) di antara nama class dan member function, hal ini dapat dilakukan ada atau tidak ada instantiation pada class.
Contoh penulisan Akses Melalui Class
nama_class::getS_id();
Untuk static member function tidak seperti static member variable yang mengharuskan kita mendefinisi member di luar class. Static member function dapat langsung digunakan setelah deklarasi Static Member Function.
Contoh program
#include <iostream> #include <string> using namespace std; class siswa{ private: static int s_id; public: int id; string nama; void setID(); void printAll(); static void setS_id(int pS_id){s_id=pS_id; /*Definisi Function*/} static int getS_id(){return s_id; /*Definisi Function*/} 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::setS_id(9); //mengakses s_id melalui static member function “setS_id” siswa andi("Andi Dadi Loro"); siswa william("Joko Will"); dadi.printAll(); budi.printAll(); andi.printAll(); william.printAll(); cout<<"akses dari luar object = "<<siswa::getS_id()<<endl; //mengakses s_id melalui static member function “getS_id” return 0; }
Untuk definisi static member function kita harus memperhatikan apa yang akan kita panggil. Static member function dapat memanggil static member lainnya. untuk memanggil non static member kita membutuhkan object untuk dapat melakukanya, karena kita tahu bahwa non static member hanya ada pada object.
Your mode of describing the whole thing in this article is really nice,
every one can easily understand it, Thanks a lot.
I must show some appreciation to this writer just for rescuing
me from this type of incident. Just after searching through the internet and seeing suggestions that were not pleasant, I believed
my life was gone. Being alive without the presence of strategies
to the difficulties you’ve solved by way of your good site is a critical
case, and the ones that could have negatively damaged my career if I had not encountered
the blog. Your primary capability and kindness in maneuvering all the pieces was useful.
I don’t know what I would have done if I
hadn’t come upon such a thing like this. I’m able to now relish my future.
Thank you so much for the specialized and amazing guide.
I won’t be reluctant to propose your web site to anyone who
should get tips about this issue.