Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Movendo Ponteiros Únicos | Ponteiros Únicos
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
Movendo Ponteiros Únicos

Cópia Não Permitida

Um std::unique_ptr é um ponteiro inteligente que gerencia um objeto alocado dinamicamente e garante sua devida exclusão quando sai do escopo. Ele tem posse exclusiva do objeto que gerencia, o que significa que nenhum dois std::unique_ptr podem possuir o mesmo objeto simultaneamente.

cpp

main

copy
123456789
#include <iostream> #include <memory> int main() { std::unique_ptr<int> first_unique_pointer = std::make_unique<int>(42); // This will cause a compilation error: copying is not allowed std::unique_ptr<int> second_unique_pointer = first_unique_pointer; }

Movendo um Ponteiro Único

Embora a cópia não seja permitida, você pode transferir a posse do objeto usando std::move. Isso move o recurso de um std::unique_ptr para outro, deixando o ponteiro original vazio.

cpp

main

copy
123456789101112131415
#include <iostream> #include <memory> int main() { std::unique_ptr<int> first_unique_pointer = std::make_unique<int>(42); // Transferring ownership using std::move std::unique_ptr<int> second_unique_pointer = std::move(first_unique_pointer); if (!first_unique_pointer) std::cout << "first_unique_pointer is now empty.\n"; std::cout << "second_unique_pointer owns the value: " << *second_unique_pointer << '\n'; }

Quando você usa std::move, a propriedade do objeto é transferida de um ponteiro único para outro. Após isso, o ponteiro original não possui mais o objeto, e o novo ponteiro se torna seu proprietário.

Tarefa

Swipe to start coding

Complete o seguinte código de forma que a propriedade do inteiro alocado dinamicamente (com valor 42) seja transferida com segurança de ptr1 para ptr2.

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 2. Capítulo 2
toggle bottom row

book
Movendo Ponteiros Únicos

Cópia Não Permitida

Um std::unique_ptr é um ponteiro inteligente que gerencia um objeto alocado dinamicamente e garante sua devida exclusão quando sai do escopo. Ele tem posse exclusiva do objeto que gerencia, o que significa que nenhum dois std::unique_ptr podem possuir o mesmo objeto simultaneamente.

cpp

main

copy
123456789
#include <iostream> #include <memory> int main() { std::unique_ptr<int> first_unique_pointer = std::make_unique<int>(42); // This will cause a compilation error: copying is not allowed std::unique_ptr<int> second_unique_pointer = first_unique_pointer; }

Movendo um Ponteiro Único

Embora a cópia não seja permitida, você pode transferir a posse do objeto usando std::move. Isso move o recurso de um std::unique_ptr para outro, deixando o ponteiro original vazio.

cpp

main

copy
123456789101112131415
#include <iostream> #include <memory> int main() { std::unique_ptr<int> first_unique_pointer = std::make_unique<int>(42); // Transferring ownership using std::move std::unique_ptr<int> second_unique_pointer = std::move(first_unique_pointer); if (!first_unique_pointer) std::cout << "first_unique_pointer is now empty.\n"; std::cout << "second_unique_pointer owns the value: " << *second_unique_pointer << '\n'; }

Quando você usa std::move, a propriedade do objeto é transferida de um ponteiro único para outro. Após isso, o ponteiro original não possui mais o objeto, e o novo ponteiro se torna seu proprietário.

Tarefa

Swipe to start coding

Complete o seguinte código de forma que a propriedade do inteiro alocado dinamicamente (com valor 42) seja transferida com segurança de ptr1 para ptr2.

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 2. 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