Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Criando e Usando Weak Pointers | Ponteiros Fracos
C++ Smart Pointers
course content

Conteúdo do Curso

C++ Smart Pointers

C++ Smart Pointers

1. Introdução a Ponteiros Inteligentes
2. Ponteiros Únicos
3. Ponteiros Compartilhados
4. Ponteiros Fracos
5. Tópicos Avançados

book
Criando e Usando Weak Pointers

Criando Weak Pointers

Você deve normalmente criar um std::weak_ptr a partir de um std::shared_ptr existente. Isso garante que o weak pointer observe um objeto que já está sendo gerenciado por pelo menos um shared pointer.

h

creating_weak_pointer

copy
12
std::shared_ptr<int> p_shared = std::make_shared<int>(42); std::weak_ptr<int> p_weak(sharedPtr);

O std::weak_ptr p_weak é construído a partir de um std::shared_ptr p_shared existente. Isso significa que p_weak não aumenta a contagem de referência de p_shared, mas em vez disso observa o mesmo objeto gerenciado. A validade de p_weak depende de p_shared; se todas as instâncias de std::shared_ptr que gerenciam o objeto forem destruídas, p_weak expira e não pode mais ser usado para acessar o objeto diretamente.

Usando Weak Pointers

Para acessar um objeto gerenciado por um std::weak_ptr, você deve primeiro convertê-lo para um std::shared_ptr usando lock(). Este método verifica se o objeto ainda está vivo e retorna um std::shared_ptr para ele, caso contrário, retorna um std::shared_ptr vazio.

Bloquear um weak pointer impede que o objeto seja destruído enquanto está em uso. Como std::weak_ptr não contribui para a contagem de referências, acessar diretamente o objeto arriscaria usar uma instância destruída. Convertê-lo para um std::shared_ptr aumenta a contagem de referências, garantindo que o objeto permaneça válido durante o uso.

h

converting

copy
12345
auto locked_shared = p_weak.lock(); if (locked_shared) // The object is alive, and you can use lockedSharedPtr to access it. else // The object has been deallocated, and lockedSharedPtr is empty.
Tarefa

Swipe to start coding

Complete o seguinte código para criar um std::weak_ptr a partir de um std::shared_ptr, convertê-lo de volta para um std::shared_ptr e acessar com segurança o valor do objeto gerenciado.

Solução

cpp

solution

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 2
toggle bottom row

book
Criando e Usando Weak Pointers

Criando Weak Pointers

Você deve normalmente criar um std::weak_ptr a partir de um std::shared_ptr existente. Isso garante que o weak pointer observe um objeto que já está sendo gerenciado por pelo menos um shared pointer.

h

creating_weak_pointer

copy
12
std::shared_ptr<int> p_shared = std::make_shared<int>(42); std::weak_ptr<int> p_weak(sharedPtr);

O std::weak_ptr p_weak é construído a partir de um std::shared_ptr p_shared existente. Isso significa que p_weak não aumenta a contagem de referência de p_shared, mas em vez disso observa o mesmo objeto gerenciado. A validade de p_weak depende de p_shared; se todas as instâncias de std::shared_ptr que gerenciam o objeto forem destruídas, p_weak expira e não pode mais ser usado para acessar o objeto diretamente.

Usando Weak Pointers

Para acessar um objeto gerenciado por um std::weak_ptr, você deve primeiro convertê-lo para um std::shared_ptr usando lock(). Este método verifica se o objeto ainda está vivo e retorna um std::shared_ptr para ele, caso contrário, retorna um std::shared_ptr vazio.

Bloquear um weak pointer impede que o objeto seja destruído enquanto está em uso. Como std::weak_ptr não contribui para a contagem de referências, acessar diretamente o objeto arriscaria usar uma instância destruída. Convertê-lo para um std::shared_ptr aumenta a contagem de referências, garantindo que o objeto permaneça válido durante o uso.

h

converting

copy
12345
auto locked_shared = p_weak.lock(); if (locked_shared) // The object is alive, and you can use lockedSharedPtr to access it. else // The object has been deallocated, and lockedSharedPtr is empty.
Tarefa

Swipe to start coding

Complete o seguinte código para criar um std::weak_ptr a partir de um std::shared_ptr, convertê-lo de volta para um std::shared_ptr e acessar com segurança o valor do objeto gerenciado.

Solução

cpp

solution

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 2
Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Sentimos muito que algo saiu errado. O que aconteceu?
some-alt