Rumah > pembangunan bahagian belakang > C++ > Bila dan Bagaimana Anda Harus Menggunakan `dayakan_kongsi_daripada_ini` dalam C ?

Bila dan Bagaimana Anda Harus Menggunakan `dayakan_kongsi_daripada_ini` dalam C ?

Linda Hamilton
Lepaskan: 2024-12-13 10:00:22
asal
159 orang telah melayarinya

When and How Should You Use `enable_shared_from_this` in C  ?

Memahami Kepentingan enable_shared_from_this

Soalan:

Semasa menerokai Boost,.Asi ramai pembangun menghadapi enable_shared_from_this konsep. Walaupun membaca dokumentasi, aplikasi praktikalnya masih tidak jelas. Bolehkah anda memberikan contoh dan menerangkan apabila menggunakan kelas ini adalah sesuai?

Jawapan:

enable_shared_from_this memberikan keupayaan untuk mendapatkan contoh shared_ptr yang sah kepada "ini," walaupun dalam situasi di mana hanya "ini" tersedia. Ketiadaan keupayaan ini, mendapatkan shared_ptr kepada "ini" akan memerlukan satu telah ditakrifkan sebagai ahli.

Pertimbangkan contoh berikut daripada dokumentasi Boost:

class Y: public enable_shared_from_this<Y> {
public:
    shared_ptr<Y> f() {
        return shared_from_this();
    }
};

int main() {
    shared_ptr<Y> p(new Y);
    shared_ptr<Y> q = p->f();
    assert(p == q);
    assert(!(p < q || q < p)); // p and q must share ownership
}
Salin selepas log masuk

Kaedah f() kembali shared_ptr yang sah walaupun tidak mempunyai contoh ahli.

Adalah penting untuk ambil perhatian bahawa hanya mengembalikan shared_ptr dibina dengan "ini" sebagai hujah bukanlah penyelesaian yang boleh diterima, kerana ia akan menghasilkan kiraan rujukan yang berbeza daripada rujukan "kongsi" yang sah. Akibatnya, salah satu petunjuk yang dikongsi mungkin berakhir dengan rujukan berjuntai semasa pemadaman objek.

enable_shared_from_this kini merupakan sebahagian daripada standard C 11, menjadikannya boleh diakses melalui kedua-dua C 11 dan Boost.

Atas ialah kandungan terperinci Bila dan Bagaimana Anda Harus Menggunakan `dayakan_kongsi_daripada_ini` dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan