Perbedaan C dan C++ (bag. II)
Salah satu perbedaan yang paling sering ditemui adalah bahasa C memperbolehkan penugasan (assignment) pointer bertipe void* ke pointer bertipe lain tanpa resiko apapun. Sedangkan dalam bahasa C++, hal ini tidak dapat dilakukan. Permasalahan ini sering ditemui apda kode bahasa C yang menggunakan alokasi memory (malloc). Sebagai contoh, kode berikut ini valid di bahasa C, tetapi tidak di bahasa C++:
void* ptr;
int *x = ptr; /*konversi langsung dari void* ke int* */
atau kode lain:
int *y = malloc(sizeof(int) * 5); /*konversi langsung dari void* ke int* */
Agar kode yang dituliskan bisa dikompilasi dengan benar di bahasa C dan C++, kita harus menggunakan kode yang jelas, seperti contoh:
void* ptr;
int *x = (int *) ptr;
int *y = (int *) malloc(sizeof(int) * 5);
Masalah lain yang dihadapi dalam menyetarakan bahasa C dan C++ adalah bertambahnya kata tercadangkan dalama bahasa C++. Hal ini membuat kata-kata yang semula bisa digunakan sebagai identifier di bahasa C, tidak lagi bisa digunakan di bahasa C++. Sebagai contoh:
struct template
{
int new;
struct template* class;
};
kode di atas adalah kode yang benar dalam bahasa C, tetapi tidak benar dalam bahasa C++. Karena kata-kata "template", "new", dan "class" sudah dipesan (dicadangkan).
Selain yang sudah disebutkan di atas, masih banyak syntax-syntax lain pada bahasa C yang tidak bisa digunakan atau yang memberikan hasil yang berbeda di bahasa C++. Beberapa contohnya:Operator koma bisa memberikan "l-value" pada bahasa C++, teteapi tidak pada bahasa C.Bahasa C tidak mengijinkan typedef digunakan berulang di scope yang sama, sedangkan C++ memperbolehkan penggunaan typedef secara berulang.Konstanta enumerasi selalu bertipe int pada bahasa C, sedangkan pada bahasa C++ merupakan tipe yang berbeda, dan mungkin memiliki ukuran yang berbeda dengan yang bertipe int.Identifier pada C++ tidak boleh menggunakan tanda underscore ( "_" ) dua kali atau lebih secara berurutan di posisi manapun, sedangkan pada bahasa C hanya tidak boleh digunakan di awal nama.C++ merubah sebagian fungsi pustaka standar untuk menambahkan const pemilih. Contohnya, strchr mengembalikan nilai char* pada bahasa C, tetapi mengembalikan nilai const char* pada C++
Selain yang sudah saya sebutkan, masih banyak lagi perbedaan syntax antara bahasa C dan C++. Namun biasanya perbedaan ini terletak pada tingkat advance, untuk tingkat basic mungkin tidak ada perbedaan yang signifikan.
Hai, nama saya Ikhsan Noor Rosyidin. Saya membuat blog ini agar lebih memotivasi saya dalam belajar pemrograman. Selain itu juga sebagai sarana saya berbagi dengan semua orang di internet. Saya menggunakan O/S Ubuntu 10.04 LTS, dan untuk compiler C/C++ saya gunakan GCC. Semoga isi dari blog ini bermanfaat bagi pengunjung. Harap pengunjung meninggalkan komentar, terimakasih.

0 comments:
Post a Comment