Rumah >pembangunan bahagian belakang >C++ >Mengapa C Menggunakan Operator Resolusi Skop (::) Walaupun Java Tidak?
Mengapa C Memperkenalkan Operator Resolusi Skop
Berbanding dengan Java, C menyediakan pengendali resolusi skop yang berbeza (::) dan bukannya bergantung hanya pada operator titik (.). Walaupun kejayaan Java tanpa pengendali berasingan, C memerlukan penambahan ini kerana ciri bahasa yang unik: keupayaan untuk menggunakan pengecam yang sama untuk kedua-dua pembolehubah ahli dan jenis kelas terbitan.
Perbezaan ini menjadi jelas apabila mempertimbangkan kod seperti contoh di bawah:
struct foo { int blah; }; struct thingy { int data; }; struct bar : public foo { thingy foo; };
Dalam senario ini, kedua-dua pembolehubah ahli foo dalam struct bar dan jenis kelas terbitan foo berkongsi nama yang sama. Untuk menyelesaikan kekaburan ini, pengendali resolusi skop :: digunakan.
Apabila pengkompil menemui a ., ia menganggap operan kiri ialah objek. Sebaliknya, :: menandakan nama taip, ruang nama atau ruang nama global. Pembezaan ini membolehkan pengkompil mentafsir kod seperti berikut:
test.foo.data = 5; test.foo::blah = 10;
Dalam pernyataan pertama, test.foo.data diiktiraf sebagai mengakses ahli data objek test.foo. Dalam pernyataan kedua, test.foo::blah menandakan mengakses ahli blah bagi kelas foo terbitan.
Oleh itu, pengendali resolusi skop dalam C berfungsi sebagai alat ketepatan untuk menyelesaikan kekaburan yang dicipta oleh elaun yang serupa pengecam untuk pembolehubah ahli dan jenis kelas terbitan.
Atas ialah kandungan terperinci Mengapa C Menggunakan Operator Resolusi Skop (::) Walaupun Java Tidak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!