Rumah > Artikel > pembangunan bahagian belakang > Bolehkah Tatasusunan Dimulakan dalam Senarai Pemula Ahli Pembina?
Permulaan Tatasusunan Ahli dalam Pembina
Pertimbangkan kelas C berikut:
class C { public: C() : arr({1, 2, 3}) {} // C() : arr{1, 2, 3} {} private: int arr[3]; };
Kod cuba untuk memulakan ahli tatasusunan arr dalam senarai pemula ahli pembina. Walau bagaimanapun, ia gagal untuk menyusun.
Soalan:
Jawapan:
1. Permulaan Tatasusunan dalam Pembina
Ya, adalah mungkin untuk memulakan tatasusunan dalam senarai pemula ahli pembina. Walau bagaimanapun, ia memerlukan struktur perantara:
struct A { int foo[3]; A(int a, int b, int c) : foo{a, b, c} {} }; class C { public: C() : foo(A(1, 2, 3)) {} private: A foo; };
2. Piawaian C 03
Piawaian C 03 tidak secara eksplisit menangani pemulaan tatasusunan dalam senarai pemula ahli. Walau bagaimanapun, peraturan am pemulaan langsung melarang memulakan tatasusunan dengan pendakap.
3. C 11 List Initialization
C 11 memperkenalkan senarai initialization, yang membenarkan pemulaan langsung tatasusunan menggunakan pendakap:
class C { public: C() : arr{1, 2, 3} {} private: int arr[3]; };
Dalam kes ini, sintaks menggunakan pendakap terus selepas nama tatasusunan adalah sah dan memulakan tatasusunan dalam senarai pemula ahli pembina.
Atas ialah kandungan terperinci Bolehkah Tatasusunan Dimulakan dalam Senarai Pemula Ahli Pembina?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!