Object constant
Object constant adalah object yang tidak dapat dii modify, kalau kita ubah suatu object constant, maka akan menyebabkan error pada saat program di compile
Contoh : const time noon(12,0,0);
Member function yang konstan adalah object yang harus dibuat constant supaya objectnya tidak dapat diubah.
Contoh constant pada prototype:
int get hour()const; // prototype
int time :: get hour()const // definisi
{return hour ;}
Tapi ada juga yang tidak boleh di buat const, yaitu construktor dan destruktor karena keduanya harus bisa memodify object.
Masih ingat kan apa guna construktor dan destruktor?
Construktor untuk menginisialisasi object(bagian partama yang akan dijalankan sebuah object)
Destruktor akan dijalankan ketika object akan dihancurkan.
Nested object
Sebuah Class dapat berisi object dari class lain à Composite / Nested Object
Member object disusun berurutan
class dg member objects (host objects) berada setelah deklarasi class host object tsb à perlu class prototype
Contoh:
class B; // class prototype
class A
{ public: int i;
}
class B
{ public: int j;
A obj_A; //host object
}
B obj_B; // create object class B
Obj_B.Obj_A.i = 0; // inisialisasi member class A via object B
Tiap class member function memiliki hidden parameter -> pointer "this“
"this" menunjuk ke individual object.
pointer "this" dpt digunakan secara explicit
contoh:
void setA(int angka)
{
a = angka;
// cara akses dirinya sendiri :
this->a = a;
}
static Data Member
• “Class-wide” data
• property class tdk specific pada object tertentu
• Seperti global variables, tapi punya class scope
• Hanya accessible ke object dgn class yg sama
• Efisien untuk single copy data
• Dimana hanya static variable yg akan di-update
• Initialized hanya 1 kali pada file scope
• Berlaku walaupun suatu class tidak punya object
• Berlaku independent terhadap objects
• Berlaku utk public, private & protected
– Dpt di akses lewat object apapun dari sebuah class
– Utk public static variables
• Dapat diakses dgn operator binary scope resolution (::)
Employee::count
– Utk private static variables
• Jika suatu class tdk ada object à Hanya dapat diakses via public static member function dgn operator binary scope resolution (::)
Employee::getCount()
• static member functions Tdk dpt mengakses non-static data / function
friend function
setiap data yang di deklarasikan dalam class bersifat private, dan tidak dapat diakses diluar class. Suatu fungsi yang bukan dalam class tidak akan pernah bisa mengakses data dalam class yang bersifat private. Tapi ada beberapa kasus tertentu dimana kita perlu untuk mengakses data private itu.
Class akan memberi ijin fungsi lain diluar class untuk membaca datanya, yaitu dengan membuat fungsi itu menjadi friend dari class tersebut.
• friend function di definisikan di luar dari class’s scope namum memiliki hak akses ke semua members dari class tersebut
• sekali suatu fungsi di deklarasikan sebagai friend, fungsi itu dapat mengakses private data dari class tersebut.
• Deklarasi friend funcion dg keyword ‘friend’
• Contoh:
C++ Tutorial - Friend function sample:
#include
//Declaration of the function to be made as friend for the C++ Tutorial sample
int AddToFriend(int x);
class CPP_Tutorial
{
int private_data;
friend int AddToFriend(int x);
public:
CPP_Tutorial()
{
private_data = 5;
}
};
int AddToFriend(int x)
{
CPP_Tutorial var1;
return var1.private_data + x;
}
int main()
{
cout << "Added Result for this C++ tutorial: "<< AddToFriend(4)<
The output of the above C++ Tutorial sample will be
Added Result for this C++ tutorial: 9
C++ Tutorial - Friend function:
#include < iostream.h >
class CPP_Tutorial
{
int private_data;
friend class friendclass;
public:
CPP_Tutorial()
{
private_data = 5;
}
};
class friendclass
{
public:
int subtractfrom(int x)
{
CPP_Tutorial var2;
return var2.private_data - x;
}
};
int main()
{
friendclass var3;
cout << "Added Result for this C++ tutorial: "<< var3.subtractfrom(2)<
The output of the above C++ Tutorial sample will be
Subtracted Result for this C++ tutorial: 3
Cara ini adalah cara yang baik yang diberikan olah c++ untuk membaca private variable dari suatu class. Tapi kiranya hal ini dilakukan dengan hati hati, karena jika semua fungsi dan class kita deklarasikan sebagai friends, maka konsep encapsulation dan information hiding akan hilang.
Operator Overloading
• Pemakaian Overloading operator ditujukan untuk mengoperasikan data pada object menjadi mudah
• Menggunakan keyword operator
Operator yang tidak dapat dioverloading:
| Operator | Kegunaan | Contoh |
| . (dot) | Access ke member class | cin.getline |
| .* (dot asterix) | Pointer ke member class | Object.*member |
| :: (scope) | Akses ke data / member function | Class::member |
| ?: (ternary) | seleksi kondisi | C=(a>b)?a:b |
| sizeof | Memperoleh ukuran tipe data | Sizeof (int) |
Sumber:
http://www.codersource.net/cpp_tutorial_friend.html

2 komentar:
nice post ..hehe
ini keluar di soal dari dosen ku nih,, :D
oh y?
thanks^^
Posting Komentar