C++ adalah bahasa pemrograman serbaguna yang banyak digunakan untuk pengembangan perangkat lunak sistem dan aplikasi, pengembangan game, driver, dan aplikasi klien-server. Bahasa ini dirancang dengan fokus pada kinerja, efisiensi, dan fleksibilitas, menjadikannya pilihan utama untuk aplikasi berkinerja tinggi. C++ adalah perpanjangan dari bahasa pemrograman C, menawarkan fitur pemrograman berorientasi objek dan kemampuan pemrograman generik, sambil mempertahankan efisiensi pemrograman tingkat rendah.
C++ diciptakan oleh Bjarne Stroustrup di Bell Labs pada awal 1980-an. Stroustrup memulai proyek ini sebagai perpanjangan dari bahasa C, yang sudah populer karena efisiensinya dan kontrol atas sumber daya sistem. Tujuannya adalah untuk menambahkan fitur yang mendukung pemrograman berorientasi objek (OOP), memungkinkan struktur perangkat lunak yang lebih baik, enkapsulasi data, dan penggunaan kembali kode.
Versi pertama C++, yang awalnya disebut "C with Classes," diimplementasikan pada tahun 1983. Ini memperkenalkan konsep dasar pemrograman berorientasi objek seperti kelas dan pewarisan dasar. Seiring dengan matangnya bahasa ini, C++ mengalami beberapa revisi, yang mengarah pada rilis standar C++98, yang memformalkan bahasa tersebut dan mencakup fitur seperti template dan Standard Template Library (STL).
Pada tahun 2000-an, C++ ditingkatkan lebih lanjut dengan standar C03, yang terutama memperbaiki inkonsistensi yang ditemukan di C98. C11, yang dirilis pada tahun 2011, memperkenalkan fitur signifikan seperti kata kunci auto, loop berbasis rentang, ekspresi lambda, dan pointer pintar. Standar berikutnya, termasuk C14, C17, dan C20, memperkenalkan peningkatan lebih lanjut seperti binding terstruktur, dukungan konkruensi, dan pemrograman metatemplate yang lebih baik.
Saat ini, C++ adalah bahasa populer yang digunakan di berbagai domain, termasuk pengembangan game, sistem tertanam, komputasi berkinerja tinggi, dan aplikasi berskala besar. Komunitasnya terus berkembang dengan kontribusi yang berkelanjutan terhadap pustaka standar, alat, dan kerangka kerja. C++ modern menekankan sintaks yang lebih aman, lebih ekspresif, dan lebih mudah digunakan sambil mempertahankan karakteristik kinerjanya.
C++ mendukung paradigma pemrograman berorientasi objek, memungkinkan pembuatan objek yang mengenkapsulasi data dan perilaku. Contohnya:
class Animal {
public:
void speak() {
std::cout << "Hewan berbicara" << std::endl;
}
};
Animal dog;
dog.speak(); // Output: Hewan berbicara
Template C++ memungkinkan pemrograman generik, memungkinkan fungsi dan kelas beroperasi dengan tipe data apa pun:
template <typename T>
T add(T a, T b) {
return a + b;
}
int result = add(5, 10); // Bekerja dengan bilangan bulat
C++ memungkinkan pengembang untuk mendefinisikan bagaimana operator bekerja dengan tipe yang ditentukan pengguna, meningkatkan keterbacaan kode:
class Point {
public:
int x, y;
Point operator+(const Point& other) {
return Point{x + other.x, y + other.y};
}
};
Point p1{1, 2}, p2{3, 4};
Point p3 = p1 + p2; // Menggunakan operator + yang di-overload
C++ menyediakan dukungan bawaan untuk penanganan eksepsi, memungkinkan pengembang untuk mengelola kesalahan dengan lancar:
try {
throw std::runtime_error("Kesalahan terjadi");
} catch (const std::exception& e) {
std::cout << e.what() << std::endl; // Output: Kesalahan terjadi
}
C++ menyertakan STL, yang menyediakan struktur data dan algoritma yang berguna:
#include <vector>
#include <algorithm>
std::vector<int> numbers = {1, 2, 3};
std::sort(numbers.begin(), numbers.end()); // Mengurutkan vektor
C++ menerapkan RAII, secara otomatis mengelola alokasi dan dealokasi sumber daya:
class Resource {
public:
Resource() { /* alokasikan sumber daya */ }
~Resource() { /* bebaskan sumber daya */ }
};
void function() {
Resource res; // Sumber daya dibersihkan saat res keluar dari lingkup
}
Kata kunci constexpr
memungkinkan evaluasi ekspresi pada waktu kompilasi, meningkatkan kinerja:
constexpr int square(int x) {
return x * x;
}
int result = square(5); // Dievaluasi pada waktu kompilasi
C++11 memperkenalkan pointer pintar untuk mengelola memori secara otomatis, mengurangi kebocoran memori:
#include <memory>
std::unique_ptr<int> ptr(new int(42)); // Secara otomatis dihapus saat keluar dari lingkup
Fungsi anonim, yang dikenal sebagai ekspresi lambda, meningkatkan kepadatan dan keterbacaan kode:
auto sum = [](int a, int b) { return a + b; };
int result = sum(3, 4); // result adalah 7
C++11 memperkenalkan fasilitas untuk multithreading, memungkinkan pemrograman konkuren:
#include <thread>
void threadFunction() {
std::cout << "Thread berjalan" << std::endl;
}
std::thread t(threadFunction);
t.join(); // Menunggu thread selesai
C++ terutama dikompilasi. Kompiler populer termasuk:
C++ dapat dikembangkan di berbagai lingkungan pengembangan terintegrasi (IDE):
Proyek dalam C++ biasanya dibangun menggunakan sistem build seperti Makefiles, CMake, atau alat terintegrasi dalam IDE. Misalnya, dengan CMake, sebuah CMakeLists.txt sederhana akan terlihat seperti ini:
cmake_minimum_required(VERSION 3.0)
project(MyProject)
add_executable(MyExecutable main.cpp)
C++ digunakan di berbagai aplikasi:
C++ memiliki hubungan dan perbandingan dengan beberapa bahasa pemrograman:
Menerjemahkan C++ ke bahasa lain atau sebaliknya biasanya memerlukan pertimbangan yang cermat terhadap fitur seperti manajemen memori, penanganan eksepsi, dan template.
Saat bekerja dengan alat ini, penting untuk memverifikasi kode yang diterjemahkan untuk akurasi, efisiensi, dan pelestarian logika kode asli.