Saturday, October 9, 2010

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

Followers

followers

  © Blogger templates ProBlogger Template by Ourblogtemplates.com 2008

Back to TOP