Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Parameter pointer bersama diteruskan oleh referensi rvalue. Lewati berdasarkan nilai sebagai gantinya.
Pedoman Inti C++: R.34: Ambil parameter widget> shared_ptr<untuk mengekspresikan kepemilikan bersama
Meneruskan pointer bersama dengan referensi rvalue jarang diperlukan. Kecuali itu adalah implementasi semantik pemindahan untuk jenis pointer bersama itu sendiri, objek pointer bersama dapat diteruskan dengan aman oleh nilai. Menggunakan referensi rvalue mungkin juga merupakan indikasi bahwa pointer unik lebih tepat karena dengan jelas mentransfer kepemilikan unik dari penelepon ke penerima panggilan.
Keterangan
Pemeriksaan ini mengenali
std::shared_pointerdan jenis yang ditentukan pengguna yang cenderung berperilaku seperti pointer bersama. Ciri-ciri berikut diharapkan untuk pointer bersama yang ditentukan pengguna:dereferensi berlebih atau operator akses anggota (publik dan tidak dihapus);
konstruktor salinan atau operator penugasan salinan (publik dan tidak dihapus);
destruktor publik yang tidak dihapus atau default. Destruktor kosong masih dihitung sebagai ditentukan pengguna.
Contoh
Pengoptimalan konstruktor yang dipertanyakan:
action::action(std::shared_ptr<transaction> &&t) noexcept // C26416
: transaction_(std::move(t))
{}
action::action(std::shared_ptr<transaction> &t) noexcept // also C26417 LVALUE_REF_SHARED_PTR
: transaction_(t)
{}
Pengoptimalan konstruktor yang dipertanyakan - disederhanakan:
action::action(std::shared_ptr<transaction> t) noexcept
: transaction_(std::move(t))
{}