Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A megosztott mutató paraméterét a rvalue-referencia adja át. Adja át inkább érték szerint.
C++ alapvető irányelvek: R.34: Shared_ptr widgetparaméter> használata<a megosztott tulajdonjog kifejezéséhez
Ritkán szükséges a megosztott mutató átengedése rvalue-hivatkozással. Ha nem egy megosztott mutatótípus áthelyezési szemantikájának implementációja, a megosztott mutatóobjektumok érték szerint biztonságosan átadhatók. A rvalue-hivatkozás használata azt is jelezheti, hogy az egyedi mutató megfelelőbb, mivel egyértelműen egyedi tulajdonjogot ad át a hívótól a hívónak.
Megjegyzések
Ez az ellenőrzés felismeri
std::shared_pointerés felhasználó által definiált típusok, amelyek valószínűleg megosztott mutatóként viselkednek. A felhasználó által definiált megosztott mutatók esetében a következő jellemzők várhatók:túlterhelt hareferencia vagy taghozzáférési operátorok (nyilvános és nem törölt);
másolási konstruktor vagy másolás-hozzárendelési operátor (nyilvános és nem törölt);
nyilvános destruktor, amely nincs törölve vagy alapértelmezés szerint törölve. Az üres destruktorok továbbra is felhasználó által definiáltnak számítanak.
Példák
Megkérdőjelezhető konstruktoroptimalizálás:
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)
{}
Megkérdőjelezhető konstruktoroptimalizálás – egyszerűsített:
action::action(std::shared_ptr<transaction> t) noexcept
: transaction_(std::move(t))
{}