Di PHP Anda sudah belajar bahwa untuk mengakses elemen suatu kelas yang sudah di-instance (di-‘New’) cukup dengan menggunakan operator panah ‘$a->b’ (link sumber) , di C++ tidak sesederhana itu.
Di C++ ada operator titik / dot (.) , titik dua ganda / double colon (::), dan panah / arrow (->)
Di sini Anda akan belajar memahami apa bedanya ‘a.b’ , ‘a->b, dan ‘a::b’
1. Double colon (a::b)
Digunakan jika ‘a’ adalah suatu nama kelas atau namespace dan ‘b’ adalah member dari ‘a’ . Dalam pemrograman C++ di atas ketika Anda melihat using namespace std :
using namespace std ; // bla..bla int main(){ cout<<"Halo world"; return 0 ; }
Sebenarnya ini hanyalah bentuk singkat dari :
// bla..bla int main(){ std::cout<<"Halo world"; return 0 ; }
2. Dot (a.b)
Operator ini hanya digunakan jika ‘a’ adalah objek aktual (atau reference ke suatu objek) dari kelas ‘a’ , dan ‘b’ adalah anggota dari ‘a’. Ini lebih menyerupai ‘$a->b’ di PHP. Lebih lanjut lihat contoh di bawah.
3. Arrow
Operator ini digunakan untuk pointer, a->b sebenarnya bentuk lain dari (*a).b . Untuk lebih memahami ini, saya sarankan Anda lebih dahulu menguasai mengenai Objek Pointer di C++ , silahkan baca di sini.
Contoh Coding mengguakan (.) , (::), dan (->)
Agar lebih jelas langsung saja praktek, copy paste kode dibawah, compile, dan jalankan. Dan perhatikan baik-baik!
#include <iostream> #include <string> using namespace std; class Human { private: int age; public: string name; Human(int humanAge, string humanName) : age(humanAge), name(std::move(humanName)) {} void DoSomething() { cout << age << endl; } static void DisplayAge(const Human& person) { cout << person.age << endl; } // ... }; int main() { // Usage of Dot(.) Human firstMan(13, "Jim"); // firstMan is an instance of class Human cout << firstMan.name << endl; // accessing member attributes firstMan.DoSomething(); // accessing member functions // Usage of Pointer Operator (->) Human* secondMan = new Human(24, "Tom"); cout << secondMan->name << endl; // accessing member attributes cout << (*secondMan).name << endl; // SAME ABOVE, accessing member attributes secondMan->DoSomething(); // accessing member functions (*secondMan).DoSomething(); // SAME ABOVE, accessing member functions // Usage of Double Colon (::) Human::DisplayAge(firstMan); firstMan.DisplayAge(firstMan); // ok but not recommended secondMan->DisplayAge(firstMan); // ok but not recommended delete(secondMan); return 0; }
Comments