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.
0 comments:
Post a Comment