C++
| C++ | |
|---|---|
| Paradigmas | Multi-paradigma: prosedural, imperatif, fungsional, berorientasi objek, generik, modular |
| Kaluargo | C |
| Barancang dek | Bjarne Stroustrup |
| Pangambang | ISO/IEC JTC 1 (Panitia Gabungan 1) / SC 22 (Subkomite 22) / WG 21 (Kelompok Kerja 21) |
| Kalua partamo | 1985 |
| Rilis stabil | C++23 (ISO/IEC 14882:2024)
/ 19 Oktober 2024 |
| Rilis pratayang | C++26
/ 5 Agustus 2025 |
| Tipe sistem | Statis, kuat, nominatif, sajo sebagian diinfrensikan |
| Sistem operasi | Lintas platform |
| Ekstensi namo berkas | .C, .cc, .cpp, .cxx, .c++, .h, .H, .hh, .hpp, .hxx, .h++, .cppm, .ixx[1] |
| Situs web | isocpp.org |
| Repositori | isocpp.org |
| Implementasi utama | |
| Templat:Nowraplinks | |
| Terpengaruh oleh | |
| Ada, ALGOL 68, BCPL, C, CLU, F#, ML, Mesa, Modula-2, Simula, Smalltalk | |
| Mempengaruhi | |
| Ada 95, C#, C99, Carbon, Chapel, Clojure, D, Java, JS++, Lua, Nim, Objective-C++, Perl, PHP, Python, Rust, Seed7 | |
C++[lower-alpha 1] adolah sabuah bahasa pemrograman tingkat tinggi nan umum nan diciptakan dek ahli komputer asal Denmark, Bjarne Stroustrup. C++ paraluang dipublikasikan tahun 1985 sabagai perpanjangan dari bahasa C, jo manambahkan fitur berorientasi objek (OOP). Sabalunyo, bahasa ko baranak jo banyak fitur baru—pada C++98 (standarisasi pada 1997[update] ), C++ manambahkan fitur fungsional disampiang fasilitas tingkat randah untuk manipulasi memori pada sistem sabagai mikrokomputer atau untuak manciptokan sistem operasi saperti Linux jo Windows. Di kemudian hari, muncul pulok fitur pemrograman generik (malalui template). Biasanyo C++ dilakokan sabagai bahasa terkompilasi, jo banyak panyediannyo kompiler C++, di antaro nyo Free Software Foundation, LLVM, Microsoft, Intel, Embarcadero, Oracle, jo IBM.[2]
C++ dirancang untuak pemrograman sistem jo perangkat lunak tertanam pada sistem nan sumberdayonyo terbatas jo skala gadang, jo menekankan kinerja, efisiensi, jo keluwesan pamakaian sabagai hal utama desainnyo.[3] C++ jugo dimanfaatan dalam banyak konteks lain, kekuatan utamo nyo ado pada infrastruktur perangkat lunak jo aplikasi nan sumberdayo terbatas,[3] termasuk aplikasi desktop, permainan video, server (contohnyo e-commerce, mesin pencari web, atau basis data), jo aplikasi nan kritis kinerja (contohnyo sentral telepon atau wahana antariksa).[4]
C++ distandarisasi dek Organisasi Internasional untuk Standardisasi (ISO), jo versi standar tarbaru disahkan ISO pada Oktober 2024 sabagai ISO/IEC 14882:2024 (nan secara informal disebut C++23).[5] Bahasa C++ paraluang distandarisasi tahun 1998 sabagai ISO/IEC 14882:1998, nan kemudian diubah jo C++03, C++11, C++14, C++17, jo C++20. Standar C++23 kini manambahkan fitur baru jo memperluas pustaka standar. Sabalunyo distandarisasi, C++ dikembangakan dek Stroustrup di Bell Labs sabanjak 1979 sabagai perpanjangan bahasa C; ia maingin bahasa nan efisien jo fleksibel saperti C, tapi juo manyadiokan fitur tingkat tinggi untuak organisasi program.[6] Sejak 2012, C++ menganut jadwal rilis tigo tahun sakali[7] jo C++26 disabuik sabagai standar nan direncanokan salanjunyo.[8]
Sejarah
[suntiang | suntiang sumber]
Pada tahun 1979, Bjarne Stroustrup, seorang ilmuwan komputer asal Denmark, mulai mengembangkan "Templat:Visible anchor", cikal bakal C++.[9] Motivasi nan muncul berasal dari pengalaman Stroustrup waktu ngerjain disertasinya. Stroustrup mendapati bahwa Simula punyo fitur nan bermanfaat untuak pengembangan software nan besar, tapi lambat dipakai secara praktis, sedangkan BCPL cepat tapi terlalu dasar untuak software besar. Waktu Stroustrup bekerja di AT&T Bell Labs, ia menghadapi masalah menganalisis UNIX kernel terkait distributed computing. Mengingat pengalaman PhD-nya, Stroustrup berusaha memperkaya bahasa C jo fitur ala Simula.[10]
Awalnya, "C jo Kelas" nan dikembangkan Stroustrup menambah fitur di compiler C, Cpre, termasuk kelas, derived classes, pengetikan kuat, inlining, jo default arguments.[11]

Pada 1982, Stroustrup mulai mengembangkan penerus C jo Kelas nan dinamakan "C++" (++ nan artinya increment operator di C) setelah melewati beberapa nama lain. Fitur baru ditambah, termasuk virtual functions, fungsi dan operator overloading, referensi, konstanta, alokasi memori bebas aman (new/delete), pengecekan tipe lebih baik, jo komentar gaya BCPL pakai dua garis miring (//). Stroustrup jg bikin compiler mandiri untuk C++, Cfront.
Pada 1984, Stroustrup membuat pustaka input/output stream pertama. Ide operator output diganti dari fungsi output dinamai datang dari Doug McIlroy.[12]
Pada 1985, edisi pertama The C++ Programming Language dirilis, nan menjadi referensi utama, karano belum ado standar resmi.[13] Implementasi komersial pertama C++ dirilis Oktober tahun itu juga.[9]
Pada 1989, C++ 2.0 dirilis, disusul edisi kedua The C++ Programming Language pada 1991.[14] Fitur baru di 2.0 termasuk multiple inheritance, abstract classes, static member functions, const member functions, dan protected members. Pada 1990, The Annotated C++ Reference Manual diterbitkan. Ngaro jadi dasar standar berikut. Tambahan fitur lain termasuk template, exceptions, namespaces, cast baru, dan Boolean type.
Pada 1998, C++98 dirilis, menstandarkan bahasa, jo pembaruan minor (C++03) dirilis 2003.
Setelah C++98, perkembangan C++ lambat hingga 2011, saat C++11 dirilis, menambah fitur baru jo pustaka standar. Update minor C++14 muncul Desember 2014, diikuti tambahan baru di C++17.[15] Draft C++20 disetujui 4 September 2020, diterbitkan resmi 15 Desember 2020.[15]
Pada 3 Januari 2018, Stroustrup diumumkan sebagai pemenang Charles Stark Draper Prize 2018, "karano konsepsi jo pengembangan bahasa C++".[16]
Desember 2022, C++ nang ranking ketigo di TIOBE index, ngalahin Java untuk pertama kali. Pada November 2024[update] , bahasa ini nang ranking kedua saing jo Python, Java ketigo.[17]
Maret 2025, Stroustrup minta komunitas pertahankan bahasa ini, karano manual memory management bisa menyebabkan bug nan jadi risiko keamanan, seperti buffer overflow.[18]
Etimologi
[suntiang | suntiang sumber]Menurut Stroustrup, "nama ini menandakan evolusi dari C."[19] Nama ini dikreditkan ka Rick Mascitti (pertengahan 1983) dan pertama kali dipakai Desember 1983. Saat ditanya informal 1992, Mascitti bilang nama ini dibuat dengan semangat tongue-in-cheek. Nama datang dari operator ++ C (nan meningkatkan nilai sebuah variabel) jo konvensi pake "+" untuk program nan ditingkatkan.
Sewaktu pengembangan, bahasa ini dikenal sebagai "C baru" dan "C jo Kelas"[20] sebelum mendapat nama resmi.
Filosofi
[suntiang | suntiang sumber]Sepanjang hidup C++, pengembangan dipandu prinsip:[10]
- Harus berdasarkan masalah nyata dan fitur langsung berguna di program riil.
- Setiap fitur harus bisa diimplementasikan (dengan cara jelas).
- Programmer bebas pilih gaya programming dan itu harus didukung C++.
- Mengizinkan fitur berguna lebih penting daripada mencegah setiap kemungkinan salah pakai C++.
- Harus menyediakan fasilitas untuk mengorganisir program menjadi bagian terpisah, dan menggabungkan bagian yang dikembangkan berbeda.
- Tidak boleh ada pelanggaran implisit sistem tipe (tapi izinkan pelanggaran eksplisit oleh programmer).
- Tipe dibuat user harus punya performa sama seperti tipe bawaan.
- Fitur tidak dipakai tidak boleh mengganggu performa executable.
- Tidak ada bahasa di bawah C++ (kecuali assembly language).
- C++ harus bisa bekerja bersama bahasa lain, bukan membuat lingkungan terpisah incompatible.
- Jika maksud programmer tidak jelas, izinkan kontrol manual.
Standarisasi
[suntiang | suntiang sumber]| Tahun | Standar ISO/IEC | Nama informal |
|---|---|---|
| 1998 | 14882:1998 | C++98 |
| 2003 | 14882:2003 | C++03 |
| 2011 | 14882:2011 | C++11, C++0x |
| 2014 | 14882:2014 | C++14, C++1y |
| 2017 | 14882:2017 | C++17, C++1z |
| 2020 | 14882:2020 | C++20, C++2a |
| 2024 | 14882:2024 | C++23, C++2b |
| TBA | C++26, C++2c |
C++ distandarkan oleh ISO working group WG21, nan rapat tiga kali setahun.[21] Sampai sekarang, tujuh revisi standar diterbitkan, dan sedang mengembangkan C++26.

Pada 1998, ISO standard pertama diterbitkan ISO/IEC 14882:1998, informalnya C++98. Pada 2003, versi baru diterbitkan ISO/IEC 14882:2003, memperbaiki masalah C++98.
Revisi besar berikutnya informal disebut "C++0x", dirilis 2011.[22] C++11 (14882:2011) manyo tambahannyo ka baso intinyo jo pustaka standar.[23] C++11 (14882:2011) menambah banyak fitur inti dan pustaka standar.
2014, C++14 (C++1y) dirilis sebagai ekstensi kecil C++11, memperbaiki bug dan sedikit peningkatan.Tahun 2014, C++14 (nan juo dikanali sabagai C++1y) diriliskan sabagai tambahan kecil untuak C++11, utamo-utama manyo perbaikan bug jo paningkatan kecil.[24] Prosedur pemungutan suara Draf Standar Internasional tamam di pertengahan Agustus 2014.[25]
Setelah C++14, revisi besar C++17 (C++1z) diselesaikan oleh ISO pertengahan Juli 2017, diterbitkan Desember 2017.
ISO juga menerbitkan laporan teknis & spesifikasi tambahan, misal:
- ISO/IEC TR 18015:2006 – pemakaian C++ di embedded system, performa fitur
- ISO/IEC TR 19768:2007 – ekstensi pustaka, masuk ke C++11
- ISO/IEC TR 29124:2010 – fungsi matematika khusus, masuk C++17
- ISO/IEC TR 24733:2011 – aritmatika floating-point desimal
- ISO/IEC TS 18822:2015 – filesystem standar, masuk C++17
- ISO/IEC TS 19570:2015 – algoritma pustaka paralel, masuk C++17
- ISO/IEC TS 19841:2015 – transactional memory
- ISO/IEC TS 19568:2015 – ekstensi pustaka baru, masuk C++17
- ISO/IEC TS 19217:2015 – konsep C++, masuk C++20
- ISO/IEC TS 19571:2016 – pustaka concurrency, masuk C++20
- ISO/IEC TS 19568:2017 – ekstensi pustaka umum
- ISO/IEC TS 21425:2017 – pustaka ranges, masuk C++20
- ISO/IEC TS 22277:2017 – coroutines, masuk C++20
- ISO/IEC TS 19216:2018 – pustaka networking
- ISO/IEC TS 21544:2018 – modules, masuk C++20
- ISO/IEC TS 19570:2018 – pustaka paralel
- ISO/IEC TS 23619:2021 – refleksi (reflection)
- ISO/IEC TS 9922:2024 – ekstensi concurrency baru
- ISO/IEC TS 19568:2024 – ekstensi pustaka lain
Teknis spesifikasi lainnya masih dalam pengembangan jo menunggu persetujuan.
Contoh Program C++
[suntiang | suntiang sumber]Contoh program sederhana C++ untuak Hello world jo menggunokan pustaka dasar C++ dapek dicaliak di bawah iko:[rujuakan?]
#include <iostream>
using namespace std;
int main(){
string nama_saya ="Panggih Dafa Najmuddin";
string waras_kelas = "11";
Int tinggi_badan = 175;
char golongan_darah = "0";
count<<"string nama_saya :"<<Panggih_dafa<<endl;
count<<"walas_kelas :"<<11<<endl;
count<<"tinggi badan :"<<175<<endl
count<<"golongan darah :"<<AB<<endl;
{
cout <<"hello world"<<endl;
return 0;
}
Keterangan
[suntiang | suntiang sumber]Baris patamo:
#include <iostream.h>
Sabagai bagian dari proses kompilator, kompilator dari c++ manjalankan program nan dinamoan preprosesor.[rujuakan?] Preprosesor ado kemampuan manambahan jo manghapui kode dari sumber. Pado bagian #include mambaritahuan preprosesor untuak manyertakan kode dari iostream, berkas iostream barisi deklarasi untuak barbagai fungsi nan dibutuhan dek perangkek luneik, atau class-class nan dibutuhan.[26]
Baris kaduo:
int main ()
Pernyataan iko mendeklarasiaan fungsi utamo, bahwa suatu program C++ dapek barisi banyak fungsi, nan harus dipunyoi sebuah fungsi utamo (main function). Fungsi adolah modul nan barisi kode-kode untuak manyalasaian masalah-masalah tatentu. Kato Void manandoan fungsi main indak batipe.[26] Baris katigo:
{
Kurung kurawa buka manandoan awal program.[26] Baris kaampek:
std::cout << "Hello world\n";
Cout adolah sabuah object dari pustaka perangkek luneik standar C++ nan digunoan untuak mancetak string ka piranti output standar, nan biasonyo adolah layar komputer, kompilator manghubungkan kode dari pustaka perangkek luneik standar tu jo kode nan alah ditulih untuak mandapekan hasil executable. Tanda
\n
adolah format modifier nan digunoan untuak baganti baris setelah manampilkan string, jiko ado cout lain pado program tasabuik, mako string nan manyertainyo akan dituliskan pado baris bawahnyo.[26] Baris kalimo:
# include <stdio.h>
int maksimum (int,int);
void tulis (int);
main()
int nilai 1,nilai 2,nilai maks;
printf (*\n ketikkan dua bilangan bulat:);
scanf("%d%d",& nilai 1,nilai 2);
nilai maks=maksimum (nilai 1,nilai 2);
tulis(nilai maks);
returns 0;
int maksimum(int x1,int x2)
if (x1>x2)
return x1;
else
return x2;
void tulis(int x)
printf("\n hasilnya adalah:%d",x);
Kurung kurawa tutuik manandoan akhir program.[27]
Kato nan dipasan
[suntiang | suntiang sumber]Kalompok patamo
[suntiang | suntiang sumber]C++ mampunyoi 32 buah kato nan dipasan (reserved words). Kato kunci kalompok patamo marupokan turunan dari bahasa C, di antaronyo:[27]
| auto | const | double | int | short | struct | unsigned | |
| break | continue | else | for | long | signed | switch | void |
| case | default | enum | goto | register | sizeof | typedef | volatile |
| char | do | extern | if | return | static | union | while |
Kalompok kaduo
[suntiang | suntiang sumber]Kato nan dipasan kalompok kaduo bajumlah 30. Kato-kato iko adolah baru jo hanyo ado di bahasa C++.[28]
| asm | dynamic_cast | namespace | reinterpret_cast | try |
| bool | explicit | new | static_cast | typeid |
| catch | false | operator | template | typename |
| class | friend | private | this | using |
| const_cast | inline | public | throw | virtual |
| delete | mutable | protected | true | wchar_t |
Kato-kato nan dipasan tasabuik di ateh indak buliah dipakai sabagai namo variable, class, enum, macro, jo struct.[28]
# include <stdio.h>
int maksimum (int,int);
void tulis (int);
main()
int nilai 1,nilai 2,nilai maks;
printf (*\n ketikkan dua bilangan bulat:);
scanf("%d%d",& nilai 1,nilai 2);
nilai maks=maksimum (nilai 1,nilai 2);
tulis(nilai maks);
returns 0;
int maksimum(int x1,int x2)
if (x1>x2)
return x1;
else
return x2;
void tulis(int x)
printf("\n hasilnya adalah:%d",x);
Tipe data dasa
[suntiang | suntiang sumber]Untuak manyimpan suatu variabel diparaluan tampek khusus di dalam memori komputer. Gadang jo tipe dari variabel-variabel di dalam standar program C++ dispesifikasian sabagai barikuik.[28]
| Nama | Keterangan | Ukuran | Jangkauan |
|---|---|---|---|
| char | Abjad/karakter atau untuk bilangan bulat kecil | 1 byte | signed: -128 to 127
unsigned: 0 to 255 |
| short int (short) | Bilangan bulat dengan jangkauan pendek | 2 byte | signed: -32768 to 32767
unsigned: 0 to 65535 |
| int | Bilangan bulat | 4 byte | signed: -2147483648 to 2147483647
unsigned: 0 to 4294967295 |
| long int (long) | Integer dengan jangkauan panjang | 4 byte | signed: -2147483648 to 2147483647
unsigned: 0 to 4294967295 |
| bool | Boolean, dapat bernilai benar atau salah (true or false) | i byte | true or false |
| float | Angka dengan titik mengambang (bilangan cacah) | 4 byte | 3.4e +/- 38 (7 digit) |
| double | Bilangan cacah dengan ketelitian ganda | 8 byte | 1.7e +/- 308 (15 digits) |
| long double | Bilangan cacah dengan ketelitian ganda panjang | 8 byte | 1.7e +/- 308 (15 digits) |
| wchar_t | Karakter lebar, biasa dipakai untuk Unicode karakter | 2 byte | 1 karakter lebar |
Kompilator C++
[suntiang | suntiang sumber]- Acorn C/C++
- Borland C++
- C++/CX
- C++Builder
- Cfront
- Clang
- CodeWarrior
- Comeau C/C++
- ConceptGCC
- Digital Mars
- GNU Compiler Collection
- HP aC++
- IBM XL C++
- Intel C++ Compiler
- MinGW
- Norcroft C compiler
- Open64
- Oracle Solaris Studio
- PathScale
- The Portland Group
- ROSE (compiler framework)
- Shed Skin
- Softune
- TenDRA Compiler
- THINK C
- Turbo C++
- Visual C++
- IBM VisualAge
- Watcom C/C++ compiler
- Zortech
Kaluargo bahaso pemrograman C++
[suntiang | suntiang sumber]- Algorithmic skeleton
- C++/CLI
- C++/CX
- Charm++
- Embedded C++
- Felix (programming language)
- Intel Array Building Blocks
- Intel Parallel Studio
- Managed Extensions for C++
- R++
- Sieve C++ Parallel Programming System
- Threading Building Blocks
- ΜC++
Rujuakan
[suntiang | suntiang sumber]- ↑ "Gambaran umum modul dalam C++". Microsoft. 24 April 2023.
- ↑ Stroustrup, Bjarne (1997). "1". The C++ Programming Language (edisi ke-Third). Addison-Wesley. ISBN 0-201-88954-4. OCLC 59193992. https://archive.org/details/cprogramminglang00stro_0.
- 1 2 Stroustrup, B. (6 May 2014). "Lecture:The essence of C++. University of Edinburgh". YouTube. Diarsipkan dari versi asli tanggal 28 April 2015. Diakses tanggal 12 June 2015.
- ↑ Stroustrup, Bjarne (17 February 2014). "C++ Applications". stroustrup.com. Diarsipkan dari versi asli tanggal 4 April 2021. Diakses tanggal 5 May 2014.
- ↑ Kutipan rusak: Tag
<ref>indak sah; indak ado teks untuak ref banamoisocpp2024 - ↑ "Bjarne Stroustrup's Homepage". www.stroustrup.com. Diarsipkan dari versi asli tanggal 14 May 2019. Diakses tanggal 15 May 2013.
- ↑ "C++ IS schedule" (PDF). Diarsipkan dari versi asli (PDF) tanggal 10 August 2020. Diakses tanggal 9 August 2020.
- ↑ "C++; Where it's heading". Diarsipkan dari versi asli tanggal 3 December 2018. Diakses tanggal 3 December 2018.
- 1 2 Kutipan rusak: Tag
<ref>indak sah; indak ado teks untuak ref banamoinvention3 - 1 2 Kutipan rusak: Tag
<ref>indak sah; indak ado teks untuak ref banamoevolving - ↑ Kutipan rusak: Tag
<ref>indak sah; indak ado teks untuak ref banamohopl2 - ↑ Kutipan rusak: Tag
<ref>indak sah; indak ado teks untuak ref banamohistory-cpp-paper - ↑ Kutipan rusak: Tag
<ref>indak sah; indak ado teks untuak ref banamo1st-edition3 - ↑ Kutipan rusak: Tag
<ref>indak sah; indak ado teks untuak ref banamo2nd-edition3 - 1 2 Sutter, Herb (30 Juni 2016). "Laporan perjalanan: Rapat standar ISO C++ musim panas (Oulu)". herbsutter.com. Diarsipkan dari versi asli tanggal 8 Oktober 2016.
standar berikutnyo sabalun C++17 adolah C++20
- ↑ Akademi Nasional Teknik (National Academy of Engineering) (3 Januari 2018). Pelopor Ilmu Komputer Bjarne Stroustrup Menerimo Hadiah Charles Stark Draper 2018 untuak Bidang Teknik. Siaran pers.
- ↑ TIOBE (November 2024). "Indeks TIOBE untuak November 2024". TIOBE.com. Perusahaan TIOBE. Diarsipkan dari versi asli tanggal 18 November 2024. Diakses tanggal 18 November 2024.
- ↑ Claburn, Thomas (2 Maret 2025). "Pencipta C++ manyuruah bantuan untuak mambelek bahasa pamrograman dari 'serangan serius'". The Register. Diakses tanggal 5 Maret 2025.
- ↑ "FAQ Bjarne Stroustrup – Dari mano asalnyo nama "C++"?". Diarsipkan dari versi asli tanggal 6 Februari 2016. Diakses tanggal 16 Januari 2008.
- ↑ "C Untuak Pamogram C++". Universitas Northeastern. Diarsipkan dari versi asli tanggal 17 November 2010. Diakses tanggal 7 September 2015.
- ↑ "Parameeting jo Partisipasi". Barito, Status jo Diskusi tantang Standar C++. Yayasan Standar C++. Diakses tanggal 6 September 2025.
- ↑ "Kito alah punyo standar internasional: C++0x disatujuan sabalunyo". Sutter's Mill. 12 Agustus 2011. Diarsipkan dari versi asli tanggal 28 Juni 2018. Diakses tanggal 23 November 2018.
- ↑ Kutipan rusak: Tag
<ref>indak sah; indak ado teks untuak ref banamoisocpp2011 - ↑ "Masa Depan C++". Diarsipkan dari versi asli tanggal 23 Oktober 2018. Diakses tanggal 23 November 2018 – via channel9.msdn.com.
- ↑ "Kito alah punyo C++14! : Standard C++". isocpp.org. Diarsipkan dari versi asli tanggal 19 Agustus 2014. Diakses tanggal 19 Agustus 2014.
- 1 2 3 4 Nicolai M. Josuttis (1991). C++ primer Jilid 54848 dari Programming languages, penerbit Addison-Wesley, 1991. ISBN 0201548488, 9780201548488.
- 1 2 Nicolai M. Josuttis (2002). Object-oriented programming in C++, Penerbit J. Wiley, 2002, Tebal 610 halaman. ISBN 0470843993, 9780470843994.
- 1 2 3 Gregory Satir, Doug Brown (2002). C++: the core language, Penerbit, O'Reilly Media, Inc., 1995, Tebal 207 halaman.. ISBN 156592116X, 9781565921160.
<ref> ado untuak grup banamo "lower-alpha", tapi indak ado <references group="lower-alpha"/>
