Beberapa Objek butuh untuk dapat dimodifikasi dan beberapa tidak. Kita diperbolehkan mempergunakan kata kunci const untuk menspesifikasikan suatu objek tidak dapat di modifikasi dan jika terdapat perintah modifikasi maka akan menghasilkan compilation error. Seperti membuat data type, class object dapat dibuat const menggunakan kata kunci const. Semua variable / objek const harus diinisialisasik...

[Tutorial C++] Const Class dan member function

Beberapa Objek butuh untuk dapat dimodifikasi dan beberapa tidak. Kita diperbolehkan mempergunakan kata kunci const untuk menspesifikasikan suatu objek tidak dapat di modifikasi dan jika terdapat perintah modifikasi maka akan menghasilkan compilation error. Seperti membuat data type, class object dapat dibuat const menggunakan kata kunci const. Semua variable / objek const harus diinisialisasikan pada saat pendeklarasiannya. Pembuatan const object class dilakukan melalui constructor :

const Date cDate; //default constructor
const Date cDate(10,10,2013);// constructor berparameter

jika sebuah const object class dibentuk tidak berparameter, maka di class tersebut constructor harus merupakan public member. Jika tidak maka akan terjadi error.

Sebuah const Object class jika akan memodifikasi suatu fungsi anggota dari class yang bukan const function maka akan terjadi error. Kecuali jika fungsi member tersebut juga merupakan const fungsi member.

 

class Date{
public:
int value;
void resetValue(){
value=0;
}
int getValue(){
return value;
}
}
int main(){
const Date cDate;
Date dDate;
                                                       //OBJECT     MEMBER FUNCTION
dDate.resetValue();//                       non-const   non-const
dDate.getValue();//                          non-const non-const

cDate.resetValue();//melanggar aturan const       const      non-const
cDate.getValue();//melanggar aturan const          const      non-const
return 0;
}

Kedua pemanggilan member fungsi oleh object cDate diatas akan menghasilkan sebuah error, karena object merupakan suatu const dan dia memanggil fungsi member yang bukan merupakan const. Untuk menangani kondisi tersebut maka fungsi member harus dideklarasikan sebagai const member function.

class Date{
public:
int value;
void resetValue() const{
value=0;
}
int getValue() const{
return value;
}
}
int main(){
const Date cDate;
Date dDate;
                                 //OBJECT             Member function
dDate.resetValue(); //tidak ERROR     non-const         const
dDate.getValue();   //tidak ERROR         non-const         const

cDate.resetValue();//                      const                 const
cDate.getValue();//                         const                 const
return 0;
}

Kesimpulannya adalah setiap object atau function yang merupakan suatu const hanya dapat mengakses member lain yang juga const. Kemudian setiap object/fungsi yang bukan const dapat memanggil fungsi baik const maupun non-const.

Terima kasih jika ada pertanyaan silakan komentar.

#

About Author

(:)

no comment


Comment & Discussions

    Please LOGIN before if you want to give the comment.