Rumah >pembangunan bahagian belakang >C++ >Permulaan Pembina dengan Nama Sama: Pematuhan Standard C?

Permulaan Pembina dengan Nama Sama: Pematuhan Standard C?

Patricia Arquette
Patricia Arquetteasal
2024-11-15 10:18:03410semak imbas

Constructor Initialization with Same Name: C   Standard Compliance?

Permulaan Pembina Pembolehubah Ahli Menggunakan Nama Yang 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!

Kenyataan:
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