Rumah >pembangunan bahagian belakang >C++ >Permulaan Pembina dengan Nama Sama: Pematuhan Standard C?
Soalan:
Adakah ia dalam C standard untuk memulakan pembolehubah ahli menggunakan hujah pembina yang berkongsi nama yang sama dengan pembolehubah ahli?
Contoh:
class Blah { std::vector<int> vec; public: Blah(std::vector<int> vec): vec(vec) {} };
Jawapan:
Ya, ia adalah sah dan dijamin berfungsi mengikut piawaian C.
Penjelasan:
Seksyen 12.6.2/7 C standard menyatakan, "Nama dalam senarai ekspresi pem-pemula dinilai dalam skop pembina yang mana pem-pemula ditentukan." Dalam erti kata lain, hujah pembina dan pembolehubah ahli adalah entiti yang berbeza, tetapi ia menggunakan nama yang sama.
Ini membolehkan kita memulakan pembolehubah ahli dengan nilai hujah pembina, seperti yang ditunjukkan dalam contoh.
Nota:
Adalah disyorkan untuk menggunakan rujukan const untuk hujah pembina untuk mengelakkan penyalinan objek yang tidak perlu. Jadi, adalah lebih baik untuk menggunakan:
Blah(const std::vector<int> &vec): vec(vec) {}
Atas ialah kandungan terperinci Permulaan Pembina dengan Nama Sama: Pematuhan Standard C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!