Rumah >pembangunan bahagian belakang >C++ >Bolehkah Objek Sementara Diikat kepada Rujukan Bukan Const dalam Visual Studio?

Bolehkah Objek Sementara Diikat kepada Rujukan Bukan Const dalam Visual Studio?

Patricia Arquette
Patricia Arquetteasal
2024-12-24 17:07:19658semak imbas

Can Temporary Objects Be Bound to Non-Const References in Visual Studio?

Objek Sementara Terikat kepada Rujukan Bukan Const dalam Visual Studio

Isu sama ada objek sementara boleh terikat kepada rujukan bukan const mempunyai menjadi subjek perdebatan di kalangan pengaturcara, terutamanya dalam konteks Visual Studio. Persoalannya timbul apabila kod menyusun dalam Visual Studio tetapi menghasilkan ralat dalam penyusun lain, seperti gcc.

Untuk memahami masalah, pertimbangkan kod berikut:

class Zebra { int x; };
Zebra goo() { Zebra z; return z; }
void foo(Zebra &x)
{
    Zebra y;
    x = y;
    foo(goo());
}

Anehnya, Visual Studio membenarkan kod ini untuk disusun tanpa ralat. Walau bagaimanapun, gcc menganggapnya sebagai ralat masa kompilasi. Percanggahan ini menimbulkan persoalan tentang kesahihan mengikat objek sementara kepada rujukan bukan const.

Untuk menangani perkara ini, adalah penting untuk ambil perhatian bahawa Microsoft memperkenalkan sambungan kepada pengkompil mereka, yang membolehkan pengikatan objek sementara kepada rujukan bukan const. Tingkah laku ini bertentangan dengan piawaian C, yang melarang pengikatan sedemikian.

Laporan pepijat Microsoft "Objek Sementara Boleh Diikat kepada Rujukan Bukan Kons" memberikan cerapan lanjut tentang tingkah laku ini. Ia menyatakan bahawa sambungan ini adalah pengecualian kepada standard, didayakan secara lalai dalam Visual Studio.

Walau bagaimanapun, laporan pepijat juga mencadangkan bahawa menggunakan pilihan pengkompil "/Za", yang melumpuhkan sambungan bahasa, boleh menyebabkan kod untuk gagal penyusunan, mengikut piawaian C. Ini menunjukkan bahawa tingkah laku Visual Studio dalam kes ini adalah penyimpangan yang disengajakan daripada standard.

Jadi, sementara Visual Studio membenarkan pengikatan objek sementara kepada rujukan bukan const, ia adalah sambungan yang menyimpang daripada standard C . Penyusun yang mematuhi piawaian yang ketat akan menghasilkan ralat apabila menemui kod tersebut. Adalah disyorkan untuk berhati-hati semasa menggunakan sambungan ini, kerana ia mungkin membawa kepada tingkah laku yang tidak dijangka atau isu mudah alih.

Atas ialah kandungan terperinci Bolehkah Objek Sementara Diikat kepada Rujukan Bukan Const dalam Visual Studio?. 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