Memahami Ketidakupayaan Shared_from_this dalam Pembina
Pertanyaan memfokuskan pada had penggunaan shared_from_this dalam pembina kelas. Untuk menangani perkara ini, mari kita terokai sebab teknikal di sebalik sekatan ini.
Ahli Tersembunyi Shared_ptr
Shared_from_ini adalah rujukan sendiri, bergantung pada ahli lemah_ptr dalaman yang ditambahkan pada dayakan_kongsi_dari_kelas asas ini. Walau bagaimanapun, weak_ptr ini hanya ditetapkan selepas shared_ptr pertama kepada Orang dibuat.
Garis Masa Pembinaan
Pembina kelas bertanggungjawab untuk memulakan ahlinya, termasuk membina enable_shared_from_this contoh kelas asas. Semasa pembinaan objek awal, belum ada shared_ptr yang menunjuk kepada Orang tersebut.
Hubungan antara Shared_ptr dan Weak_ptr
Pertimbangkan coretan berikut:
std::shared_ptr<Person> p(new Person());
Sebelum pembina p (ptr_kongsi) dipanggil, ungkapan new Person() mesti dinilai, yang membawa kepada pembinaan objek Person. Memandangkan pembina shared_ptr berjalan selepas objek Person dicipta, objek shared_ptr tidak wujud semasa fasa pembina Person, menjadikan penggunaan shared_from_this mustahil.
Kesimpulan
Secara teknikal , shared_from_this tidak boleh digunakan dalam pembina kerana shared_ptr yang diperlukan, yang memulakan weak_ptr dalaman, tidak wujud sehingga objek dibina sepenuhnya. Ini menghalang shared_from_this daripada mewujudkan sambungan rujukan kendiri yang diperlukan.
Atas ialah kandungan terperinci Mengapa Anda Tidak Boleh Menggunakan `shared_from_this` dalam Pembina?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!