C pada embedded system secara tradisional menggunakan struct untuk menyimpan data terstruktur.
Arduino membawa C ++ ke tabel, jadi kita bisa menggunakan kelas sebagai gantinya.
Katakanlah kita memiliki dua struktur data yang berbeda yang dapat dianggap sangat mirip:
typedef struct
{
int valueOne;
int valueTwo;
int valueThree;
} value_t;
dan:
class Value
{
public:
int valueOne;
int valueTwo;
int valueThree;
}
Dalam hal memori, apa bedanya ini?
Saya masih melihat teknik struct sedang digunakan - mengapa ini?
programming
c++
struct
class
Cybergibbons
sumber
sumber
struct
danclass
selain visibilitas defaultstruct
s digunakan terutama karena sebagian besar perangkat keras tertanam dikodekan dalam C, jadi siapa pun yang menghabiskan banyak waktu menulis kode untuk MCU kecil mungkin tahu C lebih baik daripada C ++, dan secara otomatis meraih idiom C sebelum idiom C ++. Ini masalah kinerja programmer .Jawaban:
Seperti yang diambil dari jawaban yang diterima dari Kapan Anda harus menggunakan kelas vs struct di C ++?
Dari segi memori, pengubah akses tidak membuat perbedaan dan mengingat batasan memori dari Arduino, orang cenderung menggunakan kelas dengan hierarki yang kompleks, tetapi tetap memilih POD struct.
sumber
Tidak seperti C, turunan dari
struct
dalam C ++ adalah objek dengan cara yang persis sama dengan turunan dari aclass
. Dari sudut pandang kode yang dikompilasi, mereka identik. Penggunaan memori, perataan, waktu akses, dll. Persis sama (yaitu tidak ada overhead).Dari sudut pandang programmer, ada perbedaan yang sangat kecil. Anggota yang
struct
memiliki visibilitas publik secara default, sedangkan anggota yangclass
memiliki visibilitas pribadi secara default. Jika tidak, semua fitur bahasa berfungsi dengan baik pada keduanya, seperti konstruktor / destruktor, pewarisan, polimorfisme, templat, dan overloading operator. Anda bahkan dapat memperoleh astruct
dariclass
, dan sebaliknya.Terlepas dari kesamaannya, cukup umum untuk melihat orang-orang dengan sengaja menggunakan a
struct
dalam C ++ untuk struktur yang sangat sederhana, misalnya di mana itu hanya terdiri dari beberapa anggota data, tetapi tidak ada fungsi. Aclass
akan digunakan untuk hal yang lebih kompleks. Ini murni masalah konvensi atau preferensi pribadi, dan dapat digunakan sebagai indikasi halus dari kompleksitas struktur yang dimaksudkan.sumber
Seperti yang ditunjukkan oleh jawaban lain, kinerja Anda yang khusus
struct
danclass
tidak dapat dibedakan (Ada sedikit perbedaan dalam cakupan nama jenis, karena cara Anda mendefinisikan struct Anda). Delineasi dalam C ++ bukan antarastruct
danclass
, tetapi antara tipe yang POD (data lama polos) dan tipe yang tidak, seperti dijelaskan dalam diskusi ini .sumber
Tidak ada Struktur dan kelas adalah hal yang sama, hanya berbeda dalam tingkat perlindungan, dan instantiasi baik menciptakan 'objek'.
Kurang mengetik jika Anda tidak berusaha menyembunyikan anggota data.
sumber
Catat itu
sudah usang dalam C ++ dan sebaiknya Anda gunakan saja
Tidak terlalu jelas dalam jawaban tetapi efek lain dari struct adalah warisan publik secara default vs warisan pribadi secara default dengan kelas.
Seperti yang disebutkan oleh orang lain, menggunakan struct umumnya merupakan konvensi untuk jenis POD.
Juga secara teknis 'struct vs object' harus 'struct vs class' (karena instantiating struct atau kelas masih memberikan objek).
sumber