Conteúdo do Curso
C++ Smart Pointers
C++ Smart Pointers
Criando e Compartilhando Shared Pointers
A Abordagem Recomendada
A maneira recomendada de criar um ponteiro compartilhado é através da função std::make_shared
. Esta abordagem é geralmente mais eficiente e expressiva em comparação com o uso de new
. Ela aloca memória para o objeto e o bloco de controle (contagem de referência) em uma única etapa. Por exemplo:
make_shared
// Create a shared pointer to an integer std::shared_ptr<int> p_int = std::make_shared<int>(42);
A linha acima aloca um inteiro dinâmico e também inicializa um ponteiro compartilhado para ele com uma contagem de referência de um.
A Abordagem Desencorajada
Você também pode criar ponteiros compartilhados usando new
, mas este método é desencorajado porque não é expressivo nem eficiente. A sintaxe para esta abordagem requer que você passe o objeto para o construtor do ponteiro compartilhado.
creating_shared_pointer
// Also creates a shared pointer to an integer std::shared_ptr<int> p_int(new int(42));
Alocando um inteiro dinâmico e, em seguida, passando-o para o construtor do ponteiro compartilhado. No entanto, o bloco de controle (contagem de referência) será inicializado dentro do construtor.
Isso significa que estamos fazendo duas inicializações separadas, o que é ineficiente e erro pode ser gerado.
Passando Shared Pointers
Shared pointers são projetados para compartilhamento seguro. Vamos explorar algumas maneiras de passá-los.
Obrigado pelo seu feedback!