Operator Penukaran dalam C
Soalan: Bagaimanakah pengendali penukaran berfungsi dalam C , dan bila pengkompil cuba untuk menggantikan jenis yang ditakrifkan selepas penukaran operator?
Jawapan: Operator penukaran dalam C memudahkan penukaran jenis antara kelas atau daripada kelas kepada jenis asas. Pengkompil menggantikan jenis yang ditentukan selepas operator penukaran dalam situasi berikut:
Penukaran semasa Hantar Argumen:
- Semasa menghantar hujah, peraturan untuk pemulaan salinan memohon, mempertimbangkan sebarang fungsi penukaran tidak kira sama ada ia menukar kepada rujukan atau tidak.
- Contoh: batal f(B); int main() { f(A()); }
Penukaran kepada Rujukan:
- Dalam pengendali bersyarat, penukaran kepada jenis rujukan adalah mungkin jika jenis yang ditukar kepada adalah nilai.
- Contoh: B b; 0 ? b : A();
Penukaran kepada Penunjuk Fungsi:
- Fungsi penukaran kepada penunjuk fungsi atau rujukan boleh digunakan apabila panggilan fungsi sedang dibuat.
- Contoh: typedef void (*fPtr)(int); void foo(int a); ujian struct { operator fPtr() { return foo; } };
Penukaran kepada Jenis Bukan Kelas:
- Fungsi penukaran yang ditentukan pengguna boleh digunakan untuk penukaran tersirat yang melibatkan jenis bukan kelas .
- Contoh: ujian struct { operator bool() { return true; } };
Templat Fungsi Penukaran:
- Templat boleh digunakan untuk mencipta fungsi penukaran yang membenarkan sesuatu jenis boleh ditukar kepada sebarang jenis penunjuk .
- Contoh: ujian struct { templat operator T*() { return 0; } };
-
Awas: Ini harus digunakan dengan berhati-hati kerana boleh membawa kepada penukaran yang tidak jelas.
Atas ialah kandungan terperinci Bagaimanakah pengendali penukaran berfungsi dalam C dan bila pengkompil menggunakannya untuk penggantian jenis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!