Rumah >pembangunan bahagian belakang >C++ >Mengapa `shared_from_this()` Tidak Boleh Digunakan Terus dalam Pembina?
Memahami Had shared_from_this() dalam Pembina
Konsep shared_from_this() mungkin kelihatan mudah untuk mewujudkan penunjuk dikongsi kepada objek daripada dalam pembinanya. Walau bagaimanapun, ia menimbulkan had teknikal yang menghalang penggunaannya secara langsung. Untuk memahami isu ini, mari kita terokai mekanisme asas:
Teka-teki: Menyimpan Sendiri shared_ptr dan Masa Pembinaan
Menurut rujukan buku, shared_ptr disimpan dalam ahli peribadi enable_shared_from_this<> dalam kelas asas Orang itu. Kekeliruan timbul daripada dua perkara penting:
Mengapa shared_from_this() Terhad dalam Pembina?
Penghadan shared_from_this() dalam pembina adalah disebabkan oleh sifat pembinaan yang berurutan. Semasa pembina Person sedang melaksanakan, belum ada shared_ptr yang dicipta yang boleh menunjuk ke objek Person. shared_ptr dibuat secara luaran, selepas pembinaan Orang.
Mekanisme Asas shared_from_this()
enable_shared_from_this<> menyediakan cara untuk mewujudkan weak_ptr tersembunyi dalam objek. weak_ptr ini kemudiannya digunakan oleh shared_ptr pertama yang dibuat di luar objek untuk memulakan dirinya sendiri. Walau bagaimanapun, permulaan ini hanya berlaku apabila shared_ptr dicipta secara luaran.
Kesimpulan
Sementara shared_from_this() membolehkan penciptaan penuding dikongsi ke objek dari luar kelas mereka, ia penggunaan dalam pembina dihadkan oleh urutan pembinaan. shared_ptr mesti dibuat secara luaran, selepas pembinaan objek selesai. Ini ialah pengehadan teknikal yang memastikan penunjuk dikongsi berfungsi dengan betul.
Atas ialah kandungan terperinci Mengapa `shared_from_this()` Tidak Boleh Digunakan Terus dalam Pembina?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!