Aliasing Constructor dalam Shared Pointers
Pustaka penuding kongsi menyediakan pembina aliasing yang membenarkan penuding kongsi merujuk kepada dua objek berbeza: a stored penunjuk dan penunjuk yang dimiliki. Ciri ini biasanya digunakan untuk menunjuk kepada objek ahli sambil mengekalkan pemilikan objek induk yang dimilikinya.
Mengapa Aliasing?
Aliasing amat berguna apabila anda mahu gunakan penuding untuk mengakses subjek tertentu dalam objek yang lebih besar, tanpa menjejaskan pemilikan atau seumur hidup objek induk. Ini amat berharga dalam situasi di mana:
Contoh
Pertimbangkan kod berikut:
<code class="cpp">struct Bar { // some data that we want to point to }; struct Foo { Bar bar; }; int main() { shared_ptr<Foo> f = make_shared<Foo>(); shared_ptr<Bar> specific_data(f, &f->bar); // Use specific_data to access and manipulate Bar ... f.reset(); // specific_data remains valid and can still be used to access Bar ... return 0; }</code>
Dalam contoh ini, kami mencipta penuding kongsi ke objek Foo dan kemudian menggunakan pembina aliasing untuk mencipta penuding kongsi lain yang merujuk objek Bar terkapsul dalam Foo. Walaupun selepas kami menetapkan semula penuding kongsi kepada Foo, objek Bar kekal sah dan boleh diakses melalui penuding kongsi aliasing.
Perbandingan dengan Ciri Bahasa
Sementara pembina aliasing menyediakan kefungsian yang sama, terdapat ciri bahasa yang boleh mencapai hasil yang setanding dalam senario tertentu, seperti:
<code class="cpp">Bar const& specific_data = Foo(...).bar; Bar&& also_specific_data = Foo(...).bar;</code>
Walau bagaimanapun, pembina aliasing yang ditawarkan oleh penuding dikongsi menyediakan pendekatan yang lebih fleksibel dan eksplisit untuk mengurus pemilikan dan rujukan objek kepada subjek.
Atas ialah kandungan terperinci Bila hendak menggunakan Aliasing dalam Penunjuk Dikongsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!