Pertanyaan apakah akan menggunakan kelas atau struct adalah hal yang umum di kalangan pemrogram C++ saat merancang kode. Di antara developer termuda, ada kesalahpahaman tentang perbedaan antara class dan struct secara teknis. Bahkan setelah memahami perbedaan, pengembang terkadang tidak setuju tentang kode yang lebih sesuai.
Dalam .NET, ada dua kategori jenis, class, tipe referensi, dan struct, tipe nilai. Tipe referensi berada di tumpukan, sedangkan tipe nilai berada di baris. Artikel ini dapat menjelaskan beberapa perbedaan lainnya.
Pengambilan Kunci
- Kelas adalah tipe referensi, sedangkan struct adalah tipe nilai, yang memengaruhi cara mereka menyimpan dan mengakses data.
- Struct tidak dapat mewarisi dari struct atau kelas lain, sedangkan kelas mendukung pewarisan.
- Kelas dapat memiliki destruktor untuk melepaskan sumber daya, sedangkan struct tidak mendukung destruktor.
Kelas vs Struktur
Perbedaan antara class dan struct adalah bahwa class adalah tipe referensi yang dialokasikan pada heap dan pengumpulan sampah. Di sisi lain, struct adalah tipe nilai yang dialokasikan pada tipe inline atau stack-containing.

Kelas yang ada di C++ sangat mirip dengan struktur C. Ini terdiri dari daftar anggota data dan kumpulan operasi yang dilakukan di kelas. Dapat dikatakan bahwa dalam pemrograman berorientasi objek, kelas adalah blok penyusunnya. Kelas juga mirip dengan cetak biru suatu objek.
Struct adalah tipe data dengan tipe nilai. Struct membantu membuat satu variabel menampung data terkait dari beberapa tipe. Saat membuat struktur, kata kunci “struct” digunakan. Saat objek struct dibuat menggunakan operator new, konstruktor yang sesuai dipanggil, dan objek tersebut dibuat.
Tabel perbandingan
Parameter Perbandingan | Kelas | Struktur |
---|---|---|
Visibilitas default | Swasta | Publik |
Ukuran saat kosong | 1 Byte | 0 Bytes |
Inisialisasi variabel anggota | Memungkinkan | Tidak mengizinkan |
Pengumpulan sampah | Mungkin karena menggunakan referensi pass by | Tidak mungkin karena menggunakan nilai pass by |
Penggunaan kembali | Sama sekali | Tidak |
Apa itu Kelas?
Dalam pemrograman C++, kelas adalah struktur data atau tipe yang ditentukan pengguna yang memiliki fungsi dan data sebagai anggotanya. Akses default bersifat pribadi untuk anggota kelas C++. Anggota pribadi gagal mengakses di luar kelas dan hanya dapat diakses melalui metode kelas. Warisan diperbolehkan di kelas karena fungsinya dapat diwariskan oleh subkelasnya.
Instansi tipe data kelas dikenal sebagai objek. Instansi ini dapat berisi fungsi anggota, operator yang kelebihan beban, dan konstanta variabel yang ditentukan oleh programmer. Dengan bantuan templat kelas, deklarasi kelas dapat dibuat. Templat kelas ini mewakili keluarga kelas.
Deklarasi kelas sebenarnya diperoleh dengan membuat instance template dengan satu atau lebih argumen dari template. Spesialisasi template didefinisikan sebagai contoh template dengan serangkaian argumen tertentu. Sintaks C++ mencoba membuat struktur di setiap aspek terlihat seperti tipe data dasar.
Kelas C++ memiliki anggotanya. Anggota kelas dideklarasikan masing-masing dapat diakses secara pribadi atau publik oleh penentu. Setelah specifier, jika ada anggota yang ditemui akan memiliki akses terkait kecuali specifier lain ditemui.
Apa itu Struktur?
Singkatnya, struct adalah singkatan dari sebuah bundel. Ini adalah beberapa elemen terkait yang perlu diikat bersama dalam suatu konteks dengan cara tertentu. Konteks semacam ini dapat meneruskan sejumlah argumen yang dibatasi ke suatu fungsi.
Dalam bahasa pemrograman C, ini adalah deklarasi tipe data komposit. Ini mendefinisikan daftar kelompok variabel fisik di bawah satu nama di blok memori. Hal ini memungkinkan variabel yang berbeda untuk diakses melalui satu titik atau melalui nama yang dideklarasikan struct yang mengembalikan alamat, yang sama.
Struct tersebut dapat berisi tipe data lain sehingga dapat digunakan untuk record dengan tipe data campuran atau tipe campuran lainnya. Dalam C, ini merujuk pada blok memori fisik yang berdekatan, dibatasi oleh batasan panjang kata. Akibatnya, setiap bidang ditempatkan pada offset tertentu yang tetap sejak awal.
Dalam bahasa C++, struct mirip dengan kelas C++, tetapi visibilitas defaultnya sangat berbeda. Itu dapat dialokasikan secara dinamis atau dialokasikan secara statis baik di heap atau tumpukan dengan pointer eksplisit. Visibilitas default struct di C++ bersifat pribadi.
Perbedaan Utama Antara Kelas dan Struktur
- Kelas lebih baik digunakan ketika objeknya kompleks dan besar, dan pewarisan diperlukan, sedangkan untuk yang lebih sederhana dan lebih kecil, lebih baik menggunakan struct di mana pewarisan kurang penting.
- Dalam hal visibilitas, semua fungsi dapat dilihat oleh objek kelas. Tetapi data objek struct tidak terlihat oleh objek lain yang terkait dengan struct yang sama.
- Semua jenis konstruktor diperbolehkan di kelas, seperti tanpa atau dengan parameter. Di sisi lain, struct hanya mengizinkan konstruktor berparameter.
- Kelas memiliki manajemen memori yang efektif karena kemudahan proses pengumpulan sampah, sedangkan struct menghasilkan manajemen memori yang buruk karena kurangnya pengumpulan sampah.
- Dalam hal pewarisan diperbolehkan dalam kelas karena fungsinya dapat diwarisi oleh subkelasnya. Di sisi lain, struct tidak pernah mengizinkan pewarisan.