Rumah > pembangunan bahagian belakang > C++ > Bolehkah Tatasusunan Dimulakan dalam Senarai Pemula Ahli Pembina?

Bolehkah Tatasusunan Dimulakan dalam Senarai Pemula Ahli Pembina?

DDD
Lepaskan: 2024-11-18 11:21:02
asal
488 orang telah melayarinya

Can Arrays Be Initialized in a Constructor's Member Initializer List?

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];
};
Salin selepas log masuk

Kod cuba untuk memulakan ahli tatasusunan arr dalam senarai pemula ahli pembina. Walau bagaimanapun, ia gagal untuk menyusun.

Soalan:

  1. Adakah mungkin untuk memulakan tatasusunan dalam senarai pemula ahli pembina?
  2. Apakah yang dinyatakan oleh standard C 03 tentang situasi ini?
  3. Adakah permulaan senarai C 11 menangani isu ini?

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;
};
Salin selepas log masuk

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];
};
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan