Banyak yang cenderung menulis "C / C ++", seolah-olah mereka adalah hal yang sama. Meskipun mereka memiliki banyak kesamaan, mereka jelas tidak sama.
Tapi apa sebenarnya perbedaan mendasar antara C dan C ++? Apakah C ++ merupakan versi C yang disempurnakan, atau adakah fitur dalam C yang tidak ada di C ++?
Jawaban:
Poin-poin berikut berhubungan dengan C ++:
sumber
C ++ diciptakan untuk mengelola kompleksitas yang tidak bisa ditangani oleh C. Sebagai contoh, masalah umum dengan C adalah bahwa Anda dapat "kehabisan nama untuk variabel" (tidak harus diambil secara harfiah tentu saja) karena tidak ada enkapsulasi, ruang nama dll.
Juga, C tidak memiliki pengecualian, oleh karena itu penanganan kesalahan sangat rawan kesalahan, karena tergantung pada pengguna perpustakaan untuk selalu memeriksa nilai kembali dari funcs, sedangkan dengan pengecualian, pengembang perpustakaan hanya melempar pengecualian yang menjamin aliran program akan dihentikan.
C ++ membantu dengan memiliki objek init konstruktor yang secara otomatis dipanggil oleh kompiler. Tidak seperti C struct yang perlu diinisialisasi oleh programmer (maka daerah rawan kesalahan lain).
Terakhir, ada banyak keuntungan lain yang dipuji oleh OOP, seperti penggunaan kembali objek serta konsep berbasis pemrograman generik, seperti template dan generik yang memungkinkan Anda untuk menggunakan kembali kode sumber, dll.
Dan banyak hal lain yang akan mengambil terlalu banyak waktu saya untuk dicantumkan di sini.
sumber
Secara umum, semua yang ada di C didukung di C ++. Jelas sebaliknya benar-benar salah.
Secara sederhana, C ++ berorientasi objek (jadi, misalnya, Anda memiliki kelas), C tidak.
C ++ memiliki tipe boolean yang tidak dimiliki C89.
Mereka adalah bahasa yang berbeda. Mereka hanya membagikan sebagian besar sintaksis.
sumber
_Bool
, denganbool
sebagai alias).long long
tipe data yang bukan (belum) bagian dari ISO C ++.C99 memiliki beberapa fitur yang tidak ada (setidaknya dalam bentuk yang persis sama) di C ++ (misalnya, anggota array fleksibel, array panjang variabel, dll.)
C99 juga menambahkan banyak ke perpustakaan yang tidak ada dalam standar C ++ 98/03; sebagian besar dari ini telah ditambahkan ke C ++ 11.
Dalam hal orientasi dasar, C pada dasarnya mendukung pemrograman prosedural terstruktur. C ++ mendukung hal itu serta pemrograman berorientasi objek, pemrograman generik, dan metaprogramming (melakukan perhitungan acak pada waktu kompilasi). Dengan C ++ 11, ia menambahkan beberapa bit dan potongan-potongan yang setidaknya bisa dikira sebagai dukungan pemrograman fungsional juga (misalnya, ekspresi lambda). C ++ 14 telah menambahkan beberapa lagi, tetapi kebanyakan dari mereka benar-benar lebih nyaman daripada segala macam perubahan besar dalam orientasi.
sumber
Secara pribadi, saya pikir templat adalah fitur paling signifikan yang ditambahkan C ++ ke C.
sumber
#define GENERATE_INTERFACE(T) T T##_func(T x);
; (type) safe overloading / templates di C. Saya setuju dengan Thomas bahwa destruktor adalah fitur yang jauh lebih penting yang tidak ada. Tetapi destruktor sering menyembunyikan kode penting. Ruang nama (ruang lingkup) menurut saya yang paling penting.