Rumah > pembangunan bahagian belakang > C++ > Bolehkah Kelas dengan Inisialisasi Ahli Bukan Statik Dimulakan secara Agregat dalam C?

Bolehkah Kelas dengan Inisialisasi Ahli Bukan Statik Dimulakan secara Agregat dalam C?

Barbara Streisand
Lepaskan: 2024-11-21 00:49:13
asal
573 orang telah melayarinya

Can Classes with Non-Static Member Initializers Be Aggregate Initialized in C  ?

Permulaan Agregat untuk Kelas dengan Pemula Ahli Bukan Statik

Dalam C , pemulaan agregat ialah sintaks yang mudah untuk memulakan ahli kelas atau struct tanpa memanggil pembina secara eksplisit. Walau bagaimanapun, penggunaan pemula ahli dalam kelas menimbulkan persoalan sama ada kelas/struktur kekal sebagai agregat.

C 11 dan Status Agregat

Menurut C 11 standard, mempunyai pemula ahli dalam kelas menghalang kelas/struktur daripada dianggap sebagai agregat. Ini disebabkan oleh fakta bahawa pemula ahli menyerupai pembina yang ditentukan pengguna, yang tidak dibenarkan dalam agregat.

struct A {
  int a = 3;
  int b = 3;
};

A a{0, 1}; // Invalid for C++11
Salin selepas log masuk

C 14 dan Permulaan Agregat

Walau bagaimanapun, dalam C 14, sekatan ini telah ditarik balik. Inisialisasi agregat kini dibenarkan untuk kelas/struktur dengan pemula ahli bukan statik. Perubahan ini dibuat untuk menangani maklum balas pembangun dan memudahkan pemahaman tentang permulaan agregat.

struct A {
  int a = 3;
  int b = 3;
};

A a{0, 1}; // Valid for C++14
Salin selepas log masuk

Sokongan G untuk Agregat C 14

Perhatikan bahawa G versi 5.0 dan lebih baru menyokong pemulaan agregat C 14 untuk kelas/struktur dengan pemula ahli bukan statik. Walau bagaimanapun, versi lama G mungkin tidak mengenali sintaks ini.

Atas ialah kandungan terperinci Bolehkah Kelas dengan Inisialisasi Ahli Bukan Statik Dimulakan secara Agregat dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan