Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Створення та Спільне Використання Спільних Вказівників | Спільні Вказівники
Розумні Вказівники C++
course content

Зміст курсу

Розумні Вказівники C++

Розумні Вказівники C++

1. Вступ до Розумних Вказівників
2. Унікальні Вказівники
3. Спільні Вказівники
4. Слабкі Вказівники
5. Просунуті Теми

book
Створення та Спільне Використання Спільних Вказівників

Рекомендований підхід

Рекомендований спосіб створення спільного вказівника - це використання функції std::make_shared. Цей підхід зазвичай більш ефективний та виразний у порівнянні з використанням new. Він виділяє пам'ять для об'єкта та контрольного блоку (лічильник посилань) за один крок. Наприклад:

h

make_shared

copy
12
// Create a shared pointer to an integer std::shared_ptr<int> p_int = std::make_shared<int>(42);

Вищенаведений рядок виділяє динамічне ціле число і також ініціалізує спільний вказівник на нього з лічильником посилань, рівним одному.

Непідтримуваний підхід

Ви також можете створювати спільні вказівники, використовуючи new, але цей метод не рекомендується, оскільки він не є виразним і ефективним. Синтаксис цього підходу вимагає передати об'єкт до конструктора спільного вказівника.

h

creating_shared_pointer

copy
12
// Also creates a shared pointer to an integer std::shared_ptr<int> p_int(new int(42));

Виділення динамічного цілого числа, а потім передача його до конструктора спільного вказівника. Однак, блок керування (лічильник посилань) буде ініціалізовано всередині конструктора.

Це означає, що ми виконуємо дві окремі ініціалізації, що є неефективним, і помилка може бути згенерована.

Передача Спільних Вказівників

Спільні вказівники спеціально створені для безпечного спільного використання. Давайте розглянемо кілька способів, як ми можемо їх передавати.

question mark

Якщо чотири екземпляри shared_ptr розділяють володіння одним і тим же динамічним об'єктом, коли буде викликано деструктор об'єкта?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 2
We're sorry to hear that something went wrong. What happened?
some-alt