C++ diciptakan oleh Bjarne Stroustrup pada awal 1980-an dan berakar dari bahasa C, Simula67, Algol68, dan Ada. Dibandingkan C, C++ menambahkan fitur-fitur penting seperti:
Function Overloading: Fungsi dengan nama sama tapi signature berbeda.
Reference Variables: Alias untuk variabel lain.
Operator Overloading: Memberi makna baru pada operator yang ada.
Templates: Untuk kode generik.
Keywords Baru: Seperti class, private, new, delete.
Class, Struct, & Kontrol Akses
Kelas digunakan untuk menciptakan tipe data baru yang menggabungkan data (atribut) dan operasi (method). Perbedaan utamanya dengan struct adalah akses default:
class: Default akses adalah private.
struct: Default akses adalah public.
Pengaturan akses member dilakukan dengan keyword:
public: Bisa diakses dari mana saja.
private: Hanya bisa diakses oleh member function kelas itu sendiri.
protected: Seperti private, tapi bisa diakses oleh kelas turunan.
Definisi Method & Pointer this
Method bisa didefinisikan di dalam class body (otomatis inline) atau di luar class body menggunakan scope resolution operator (::).
// Definisi di luar class bodyvoid Stack::push(int item) { // this-> adalah opsional, tapi menegaskan akses ke member objek saat ini this->data[this->topStack] = item; this->topStack++;}
Setiap member function memiliki pointer implisit this yang menunjuk ke objek yang memanggilnya.
Struktur Kode & Pembuatan Objek
Praktik yang baik adalah memisahkan kode kelas menjadi dua file:
File Header (.h): Berisi deklarasi kelas (antarmuka), dilindungi dengan #ifndef guard.
File Implementasi (.cpp): Berisi definisi method dan harus meng-#include file header-nya.
Objek dapat dibuat dengan berbagai cara, dan membernya diakses menggunakan operator . atau -> untuk pointer.
Stack myStack; // Objek di stack memoryStack *pts = new Stack; // Objek di free store (heap)myStack.push(99); // Akses via objekpts->push(100); // Akses via pointer
Summary
C++ adalah ekstensi dari C yang memperkenalkan class untuk Pemrograman Berorientasi Objek (OOP), memungkinkan enkapsulasi data (biasanya private) dan method (biasanya public).
Fondasi utamanya meliputi definisi kelas, kontrol akses, pointer this yang menghubungkan method ke instance objek, serta praktik pemisahan kode ke file .h (interface) dan .cpp (implementasi).
Additional Information (Optional)
Konteks Desain
Bjarne Stroustrup merancang C++ dengan filosofi “you don’t pay for what you don’t use.” Artinya, fitur-fitur canggih seperti virtual function tidak akan menambah overhead jika tidak digunakan, menjaga C++ tetap efisien dan cocok untuk pemrograman sistem tingkat rendah seperti di C.
Bacaan Lanjutan
C++ Core Guidelines: Sebuah proyek yang dipimpin oleh Bjarne Stroustrup dan Herb Sutter untuk menyediakan panduan modern dalam menulis kode C++ yang baik. Sangat direkomendasikan untuk melengkapi pemahaman dari materi kuliah.
Aplikasi Praktis
Konsep dasar kelas dan objek ini adalah fondasi dari hampir semua software besar yang ditulis dalam C++, mulai dari game engine (seperti Unreal Engine), aplikasi desktop (seperti Adobe Photoshop), hingga sistem operasi dan software finansial berkinerja tinggi.