Gemeinsame Zeiger als Argumente übergeben

Wenn ich ein Objekt deklariere, das in einen gemeinsamen Zeiger eingeschlossen ist:

std::shared_ptr<myClass> myClassObject(new myClass());

dann wollte ich es als Argument an eine Methode übergeben:

DoSomething(myClassObject);

//the called method
void DoSomething(std::shared_ptr<myClass> arg1)
{
   arg1->someField = 4;
}

Erhöht das oben Genannte einfach den Referenzzähler von shared_pt und alles ist cool? Oder hinterlässt es einen baumelnden Zeiger?

Solltest du das noch tun ?:

DoSomething(myClassObject.Get());

void DoSomething(std::shared_ptr<myClass>* arg1)
{
   (*arg1)->someField = 4;
}

Ich denke, dass der 2. Weg effizienter ist, weil er nur 1 Adresse kopieren muss (im Gegensatz zum gesamten Smart Pointer), aber der 1. Weg scheint besser lesbar zu sein und ich erwarte nicht, die Leistungsgrenzen zu überschreiten. Ich möchte nur sicherstellen, dass es nichts Gefährliches gibt.

Vielen Dank.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage