Переміщення Унікальних Вказівників
Копіювання не дозволено
std::unique_ptr
— це розумний вказівник, який керує динамічно виділеним об'єктом і забезпечує його правильне видалення, коли він виходить за межі області видимості. Він має виключне володіння об'єктом, яким керує, що означає, що жодні два std::unique_ptr
не можуть одночасно володіти одним і тим самим об'єктом.
main.cpp
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; }
Переміщення унікального вказівника
Хоча копіювання не дозволено, ви можете передати право власності на об'єкт, використовуючи std::move
. Це переміщує ресурс з одного std::unique_ptr
до іншого, залишаючи початковий вказівник порожнім.
main.cpp
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'; }
Коли ви використовуєте std::move
, право власності на об'єкт передається від одного унікального вказівника до іншого. Після цього початковий вказівник більше не володіє об'єктом, і новий вказівник стає його власником.
Swipe to start coding
Завершіть наступний код так, щоб право власності на динамічно виділений цілий (зі значенням 42) було безпечно передано від ptr1
до ptr2
.
Рішення
solution.cpp
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 5.56Awesome!
Completion rate improved to 5.56
Переміщення Унікальних Вказівників
Копіювання не дозволено
std::unique_ptr
— це розумний вказівник, який керує динамічно виділеним об'єктом і забезпечує його правильне видалення, коли він виходить за межі області видимості. Він має виключне володіння об'єктом, яким керує, що означає, що жодні два std::unique_ptr
не можуть одночасно володіти одним і тим самим об'єктом.
main.cpp
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; }
Переміщення унікального вказівника
Хоча копіювання не дозволено, ви можете передати право власності на об'єкт, використовуючи std::move
. Це переміщує ресурс з одного std::unique_ptr
до іншого, залишаючи початковий вказівник порожнім.
main.cpp
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'; }
Коли ви використовуєте std::move
, право власності на об'єкт передається від одного унікального вказівника до іншого. Після цього початковий вказівник більше не володіє об'єктом, і новий вказівник стає його власником.
Swipe to start coding
Завершіть наступний код так, щоб право власності на динамічно виділений цілий (зі значенням 42) було безпечно передано від ptr1
до ptr2
.
Рішення
solution.cpp
Дякуємо за ваш відгук!
single
Awesome!
Completion rate improved to 5.56
Переміщення Унікальних Вказівників
Свайпніть щоб показати меню
Копіювання не дозволено
std::unique_ptr
— це розумний вказівник, який керує динамічно виділеним об'єктом і забезпечує його правильне видалення, коли він виходить за межі області видимості. Він має виключне володіння об'єктом, яким керує, що означає, що жодні два std::unique_ptr
не можуть одночасно володіти одним і тим самим об'єктом.
main.cpp
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; }
Переміщення унікального вказівника
Хоча копіювання не дозволено, ви можете передати право власності на об'єкт, використовуючи std::move
. Це переміщує ресурс з одного std::unique_ptr
до іншого, залишаючи початковий вказівник порожнім.
main.cpp
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'; }
Коли ви використовуєте std::move
, право власності на об'єкт передається від одного унікального вказівника до іншого. Після цього початковий вказівник більше не володіє об'єктом, і новий вказівник стає його власником.
Swipe to start coding
Завершіть наступний код так, щоб право власності на динамічно виділений цілий (зі значенням 42) було безпечно передано від ptr1
до ptr2
.
Рішення
solution.cpp
Дякуємо за ваш відгук!