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

Permulaan Pembina dengan Nama Sama: Pematuhan Standard C?

Patricia Arquette
Lepaskan: 2024-11-15 10:18:03
asal
409 orang telah melayarinya

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

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

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!

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