Rumah >pembangunan bahagian belakang >C++ >Bilakah Pengkompil Menggantikan `Jenis&` dalam Operator Penukaran C?
Memahami Operator Penukaran dalam C
Dalam bidang pengaturcaraan berorientasikan objek, pengendali penukaran memainkan peranan penting dalam merapatkan jurang antara berbeza jenis data. Pengendali ini membenarkan objek dianggap sebagai jenis lain, meluaskan kebolehgunaannya.
Pertimbangkan contoh berikut untuk menggambarkan cara pengendali penukaran berfungsi:
template <class Type> class smartref { public: smartref() : data(new Type) { } operator Type&() { return *data; } private: Type* data; }; class person { public: void think() { std::cout << "I am thinking"; } }; int main() { smartref<person> p; p.think(); // why does not the compiler try substituting Type&? }
Dalam contoh ini, kelas smartref ialah ditakrifkan sebagai kelas templat, yang boleh menyimpan contoh dari sebarang jenis Jenis. Operator penukaran Type&() dilaksanakan untuk menghantar objek smartref ke rujukan Type yang mendasari.
Apabila Pengkompil Menggantikan Jenis&
Pengkompil akan menggantikan Type& dalam pengendali penukaran di bawah keadaan berikut:
Dalam kes contoh yang diberikan, pengkompil tidak menggantikan Type& dalam panggilan fungsi think() kerana ia dipanggil pada objek jenis smartref
Atas ialah kandungan terperinci Bilakah Pengkompil Menggantikan `Jenis&` dalam Operator Penukaran C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!