Rumah > pembangunan bahagian belakang > C++ > Mengapa Kami Tidak Boleh Menggunakan Tanda Kurung untuk Memulakan Ahli Data Dalam Kelas dalam C ?

Mengapa Kami Tidak Boleh Menggunakan Tanda Kurung untuk Memulakan Ahli Data Dalam Kelas dalam C ?

Barbara Streisand
Lepaskan: 2024-11-15 13:44:02
asal
281 orang telah melayarinya

Why Can't We Use Parentheses to Initialize In-Class Data Members in C  ?

Anomali Permulaan Ahli Data Dalam Kelas: Menyelidiki Piawaian C

Tidak seperti ahli data tempatan yang boleh dimulakan terus dengan () sintaks, ahli data dalam kelas menentang kaedah mudah ini. Keanehan ini telah membingungkan ramai pengaturcara, menimbulkan persoalan tentang rasional asasnya.

Menurut piawai C, pemulaan langsung ahli data kelas menggunakan () adalah dilarang untuk mengelakkan kekaburan penghuraian. Pertimbangkan senario berikut:

class S {
public:
    int i(x); // data member with initializer
};
Salin selepas log masuk

Tanpa sekatan, pengkompil boleh menjadi bingung apabila cuba menentukan sama ada pengisytiharan merujuk kepada ahli data dengan pemula atau pengisytiharan fungsi ahli.

Contohnya:

struct S {
    int i(j); // member function declaration
    int j; // data member without an initializer
};
Salin selepas log masuk

Menggunakan peraturan penghuraian sedia ada yang mengutamakan fungsi ahli berbanding ahli data dalam situasi samar-samar boleh membawa kepada tafsiran yang salah. Untuk mengelakkan kekeliruan sedemikian, piawaian C memilih untuk tidak membenarkan pemulaan langsung ahli data kelas.

Walau bagaimanapun, kaedah pemulaan alternatif kekal tersedia, seperti menggunakan sintaks = pemula-klausa:

int s = 3;
Salin selepas log masuk

Atau senarai pemula yang dibalut dengan pendakap kerinting:

int s{3};
Salin selepas log masuk

Dengan mematuhi kaedah ini, pengaturcara boleh memulakan ahli data kelas dengan berkesan, walaupun dengan sintaks yang berbeza daripada rakan tempatan mereka.

Atas ialah kandungan terperinci Mengapa Kami Tidak Boleh Menggunakan Tanda Kurung untuk Memulakan Ahli Data Dalam Kelas 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