C++ Academy · Pelajaran

struct berbanding class: Bila Menggunakan Setiap Satu

Fahami satu-satunya perbezaan sebenar antara struct dengan class dan gunakan konvensyen yang sesuai.

Pelajaran 1 daripada 413 langkah

struct berbanding class: Bila Menggunakan Setiap Satu ialah pelajaran C++ Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran C++ Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.

Mekanisme Sama, Nilai Lalai Berbeza

Dalam C++, struktur dan kelas hampir serupa. Satu-satunya perbezaan pada aras bahasa ialah penentu akses lalai.

Struktur: Awam secara Lalai

Dalam struct, ahli adalah awam melainkan ditandakan sebaliknya.

struct Point {
    int x;
    int y;
};  // x and y are public

Kelas: Persendirian secara Lalai

Dalam class, ahli adalah persendirian melainkan ditandakan awam.

class Counter {
    int n_ = 0;       // private
public:
    void increment() { n_++; }
    int  value() const { return n_; }
};

Konvensyen, Bukan Sekadar Sintaks

Komuniti C++ menggunakan kedua-dua kata kunci ini untuk menyampaikan maksud:

  • struct — data pasif (seakan-akan POD, semuanya awam)
  • class — tingkah laku terkapsul (keadaan persendirian dengan antara muka awam)

Bila Menggunakan Struktur

Gunakan struct untuk agregat data biasa: koordinat, warna RGB dan rekod ringkas.

struct Point { int x; int y; };
struct Color { unsigned char r, g, b, a; };
struct Person { std::string name; int age; };

Bila Menggunakan Kelas

Gunakan class apabila terdapat invarian yang perlu dilindungi, apabila keadaan berubah melalui kaedah atau apabila anda memerlukan pengkapsulan.

class BankAccount {
    double balance_ = 0.0;   // protected invariant
public:
    void deposit(double amount);
    bool withdraw(double amount);
    double balance() const;
};

Pemulaan Agregat

Struktur yang hanya mempunyai ahli awam boleh dimulakan menggunakan sintaks pendakap — dengan menyenaraikan nilai mengikut susunan pengisytiharan.

struct Point { int x; int y; };
Point p1{3, 4};      // aggregate init
Point p2{.x = 3, .y = 4};   // designated init (C++20)

Inheritance Juga Berbeza

Inheritance adalah awam secara lalai untuk struct dan persendirian secara lalai untuk class. Nyatakan secara jelas apabila ragu-ragu.

class B {};
struct D1 : B {};         // public inheritance
class D2 : B {};          // private inheritance

Ahli Campuran

Walaupun nilai lalainya berbeza, kedua-dua kata kunci boleh menggunakan bahagian public, private dan protected.

struct Config {
private:
    int internalCount = 0;
public:
    std::string name;
    void incrementCount() { ++internalCount; }
};

Membaca Kod berdasarkan Kata Kunci

Apabila anda melihat struct, jangkakan medan data. Apabila anda melihat class, jangkakan logik terkapsul. Anggap kata kunci itu sebagai petunjuk tentang niat pengarang.

Panduan Gaya

Kebanyakan panduan gaya (Google, LLVM, ISO C++ Core) mengesyorkan struct hanya untuk agregat pasif tanpa invarian. Apa-apa yang mempunyai kaedah bukan remeh menjadi class.

Semakan Pantas

Apakah satu-satunya perbezaan pada aras bahasa antara struct dan class dalam C++?

Imbas Kembali

Gunakan struct untuk agregat data biasa dan class untuk jenis yang mempunyai invarian serta tingkah laku. Satu-satunya perbezaan bahasa ialah akses lalai — tetapi konvensyen menganggap kedua-duanya sangat berbeza.

Percuma untuk bermula

Pelajari C++ dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
51
Pelajaran
203

Soalan Lazim

Adakah pelajaran “struct berbanding class: Bila Menggunakan Setiap Satu” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran C++ Academy, termasuk “struct berbanding class: Bila Menggunakan Setiap Satu”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “struct berbanding class: Bila Menggunakan Setiap Satu”?

Fahami satu-satunya perbezaan sebenar antara struct dengan class dan gunakan konvensyen yang sesuai. Anda berlatih C++ Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan C++ Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran C++ Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “struct berbanding class: Bila Menggunakan Setiap Satu” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. struct berbanding class: Bila Menggunakan Setiap Satu
  2. Pemboleh Ubah Ahli dan Kaedah
  3. Pembina dan Senarai Pemula Ahli
  4. Penuding this dan Pengkapsulan
← Kembali ke C++ Academy