Perbedaan Struct Bahasa C dan C++
Sebelum memahami lebih dalam materi tentang Perbedaan Struct Bahasa C dan C++, terlebih dahulu pelajari materi tentang: Perbedaan Antara Struct dan Union pada Bahasa C, Anggota Array Fleksibel Struct Pada Bahasa C, dan Bit Fields Bahasa C Beserta Penjelasannya.
Struct pada bahasa C:
- Hanya anggota data yang diperbolehkan pada struct, dan tidak memiliki anggota fungsi.
- Tidak dapat memiliki anggota tipe static.
- Tidak dapat memiliki sebuah konstructor di dalam sebuah struct.
- Inisialisasi langsung dari anggota data tidak dapat dilakukan.
- Menggunakan keyword 'struct' adalah wajib untuk mendeklarasikan sebuah variabel tipe struct.
- Tidak memiliki akses ke modifier.
- Hanya pointer to struct yang dapat melakukan akses ke struct.
- Operator Sizeof akan di-generate ke nilai 0 untuk struct yang bernilai kosong.
- Data hiding tidak dapat dilakukan pada struct.
- Dapat menampung anggota data dan anggota fungsi.
- Dapat meiliki anggota struct static.
- Pembuatan konstruktor pada struct diperbolehkan.
- Inisialisasi secara langsung dari anggota data diperbolehkan.
- Penggunaan keyword 'struct' tidak bersifat wajib ketika melakukan proses deklarasi variabel tipe struct pada C++.
- Mendukung akses ke modifier.
- Dapat diakses menggunakan pointer dan referensi ke nilai struct.
- Operator Sizeof akan generate nilai 1 untuk setiap struct yang bernilai kosong.
- Data hiding dapat dilakukan pada struct C++.
- Anggota struct dari Bahasa C dan C++ memiliki visibilitas public secara default.
Perhatikan persamaan dan perbedaan struct pada Bahasa C dan C++, sebagai berikut:
satu, Anggota fungsi yang terdapat didalam suatu struct: struct pada bahasa C tidak dapat memiliki anggota atau member fungsi dalam suatu struct, tetapi pada C++ hal tersebut dimungkinkan.
Contoh:
// Program Bahasa C untuk
// mengimplementasikan anggota
// fungsi di dalam struct.
#include <stdio.h>
struct marks {
int num;
// Anggota fungsi di dalam
// struct untuk mengambil
// nilai input dan
// menyimpannya pada "num".
void Set(int temp) { num = temp; }
// Fungsi yang digunakan untuk
// menampilkan nilai dari
// "num".
void display() { printf("%d", num); }
};
// Driver Program
int main()
{
struct marks m1;
// Memanggil fungsi di dalam struct untuk inisialisasi nilai ke "num".
m1.Set(9);
// Memanggil fungsi di dalam
// struct untuk menampilkan
// nilai dari "num".
m1.display();
}
Output:error
Catatan: Program sebelumnya akan menghasilkan error pada bahasa C tetapi tidak pada C++.
Contoh:
// Program C++ untuk
// mengimplementasikan anggota
// fungsi di dalam struct.
#include <iostream>
using namespace std;
struct marks
{
int num;
// Anggota fungsi di dalam
// struct untuk mengambil
// nilai input dan
// menyimpannya ke "num".
void Set(int temp) { num = temp; }
// Fungsi yang digunakan untuk
// menampilkan nilai.
void display() { cout
<< "num=" << num; }
};
// Driver Program
int main()
{
marks m1;
// Memanggil fungsi di dalam
// struct untuk
// menginisialisasi nilai ke
// "num".
m1.Set(9);
// Menaggil fungsi di dalam
// struct untuk menampilkan
// nilai dari "Num".
m1.display();
}
Output:num=9
dua, Anggota static pada struct: Struct bahasa C tidak memperbolehkan penggunaan anggota dengan tipe static, teatpi hal tersebut diperbolehkan pada C++.
Contoh:
// Program bahasa C dengan
// anggota struct static.
struct Record
{
static int x;
};
// Driver program
int main() { return 0; }
Output:error
Catatan: Potongan program sebelumnya akan menghasilkan error pada bahasa C, tapi tidak pada C++.
tiga, Pembuatan Konstruktor pada Struct: Struct Bahasa C tidak dapat membuat konstructor pada struct, tetapi hal tersebut dapat dilakukan pada C++.
Contoh:
// Program Bahasa C untuk
// mendemonstrasikan bahwa
// konstruktor tidak
// diperbolehkan untuk
// digunakan.
#include <stdio.h>
struct Student
{
int roll;
Student(int x) { roll = x; }
};
// Driver Program
int main()
{
struct Student s(2);
printf("%d", s.x);
return 0;
}
Output:error
Catatan: Program sebelumnya akan menghasilkan error pada Bahasa C ketika dilakukan proses kompilasi program.
empat, Inisialisai Secara Langsung Struct: Pada bahasa C tidak dapat dilakukan proses inisialisasi langsung ke anggota data struct, tetapi hal tersebut dapat dilakukan pada bahasa C++.
Contoh:
// Program Bahasa C untuk
// mendemonstrasikan bahwa
// inisialisasi anggota secara
// langsung diperbolehkan pada
// Bahasa C.
#include <stdio.h>
struct Record
{
int x = 7;
};
// Driver Program
int main()
{
struct Record s;
printf("%d", s.x);
return 0;
}
Output:error
Catatan: Contoh program sebelumnya akan menghasilkan error ketika dikompilasi menggunakan bahasa C.
lima, Penggunaan Keyword Struct: Pada Bahasa, dibutuhkan keyword "struct" untuk mendeklarasikan sebuah variabel struct. Sedangkan pada C++, proses pendeklarasian struct tidak membutuhkan keyword "struct". Contoh, dibuat sebuah struct pada suatu program dengan nama "record", dimana pada bahasa C, prose deklarasi struct tersebut harus disertai dengan keyword "struct" yang menjadi "struct Record" untuk variabel dengan nama "Record". Sedangkan pada C++, tanpa perlu menggunakan keyword "struct", proses deklarasi struct-nya dalam langsung dilakukan hanya dengan menggunakan nama "Record" saja.
enam, Access Modifier: Struct pada Bahasa C tidak memiliki akses ke modifier karekan modifier sendiri pada dasarnya tidak didukung penggunaannya pada bahasa C. Sendakgna pada srtuct C++, hal tersebut dapat dilakukan karena merupakan bagian dari bahasa C++ itu sendiri.
tujuh, Pointers dan References: Pada C++, baik pointer atau nilai referensi dapat digunakan untuk mengakses nilai struct, sedangkan pada bahasa C, untuk mengakses struct hanya dapat menggunakan pointer saja.
delapan, Operator sizeof: Pada bahasa C akan memberikan nilai 0 untuk setiap nilai struct yang kosong, sedangkan pada C++ akan memberikan nilai 1 untuk setiap nilai struct yang kosong.
Contoh:
// Program Bahasa C untuk
// mengilustrasikan struct
// kosong.
#include <stdio.h>
// Struct kosong
struct Record {};
// Driver Code
int main()
{
struct Record s;
printf("%lu\n", sizeof(s));
return 0;
}
Output:0
Catatan: Tipe default dari operator sizeof adalah long unsigned int, karena hal tersebut maka "%lu" digunakan pada program, ketimbang menggunakan "%d" pada fungsi printf.
sembilan, Data Hiding: Struct pada bahasa C tidak memperbolehkan penggunaan konsep data hiding, namun pada C++ hal tersebut dapat dilakukan, karena pada dasarnya C++ merupakan bahasa pemrograman yang berorientasi objek, sedangkan bahasa C adalah tidak.
- Dealokasi Memori Bahasa C Tanpa Menggunakan free()
- Perbedaan malloc() dan calloc() Bahasa C
- Fungsi free() Bahasa C untuk Mengetahui Ukuran Memori yang Dealokasi
- Penggunaan realloc() Bahasa C dan Penjelasannya
- Kebocoran Memori Bahasa C dan Cara Mengatasinya
- Fungsi FSEEK dan REWIND Bahasa C dan Penjelasannya
- EOF Bahasa C Menggunakan GETC dan FEOF Beserta Penjelasannya
5 komentar untuk "Perbedaan Struct Bahasa C dan C++"
Hubungi admin melalui Wa : +62-896-2414-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -
Apa yang dimaksud dengan struct pada bahasa pemrograman?
BalasHapusStrut merupakan cara yang digunakan untuk mengelompokkan beberapa variabel yang saling berkaitan ke dalam satu lokasi penyimpanan khusus.
HapusSetiap variabel yang terdapat di dalam struct dikenal sebagai anggota struct member.
HapusApa perbedaan array dan struct pada bahasa C?
BalasHapusTidak seperti array, struct dapat berisi banyak tipe data yang berbeda dalam satu variabel penyimpanan yang sama.
Hapus