Передача общих указателей в качестве аргументов

Если я объявлю объект, завернутый в общий указатель:

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

тогда я хотел передать это как аргумент методу:

DoSomething(myClassObject);

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

Вышесказанное просто увеличивает счетчик ссылок shared_pt и все круто? Или это оставляет висячий указатель?

Вы все еще должны это делать?

DoSomething(myClassObject.Get());

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

Я думаю, что 2-й способ может быть более эффективным, поскольку он должен копировать только 1 адрес (в отличие от всего интеллектуального указателя), но 1-й способ кажется более читабельным, и я не ожидаю увеличения ограничений производительности. Я просто хочу убедиться, что в этом нет ничего опасного.

Спасибо.

Ответы на вопрос(4)

Ваш ответ на вопрос