ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
21 июля
829162 Топик полностью
Evgeny_CD, Архитектор (02.04.2018 22:25, просмотров: 63) ответил lloyd на 1. std::unique_ptr<T> занимает столько же места, сколько обычный указатель при использовании malloc, или +указатель на функцию удаления, если функция кастомная и динамическая. Само автоматически там вызывается конструктор, если ты вызываешь
Вот читаю про std::unique_ptr<T> и офигеваю. -> https://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/a01404.html
http://ru.cppreference.com/w/cpp/memory/unique_ptr
std::unique_ptr – умный указатель, который: получает единоличное владение объектом через его указатель, и разрушает объект через его указатель, когда unique_ptr выходит из области видимости. unique_ptr не может быть скопирован или задан через операцию присвоения. Неконстантный unique_ptr может передать владение управляемым объектом другому указателю unique_ptr. const std::unique_ptr не может быть передан, ограничивая время жизни управляемого объекта областью, в которой указатель был создан. Когда unique_ptr уничтожается, он удаляет объект с помощью Deleter. Существует две версии std::unique_ptr: 1) управляет временем жизни одного объекта, например, созданного с помощью оператора new 2) управляет временем жизни массива, с длиной, определенной во время выполнения, созданного с помощью new[] Типичные случаи применения std::unique_ptr включают: обеспечение безопасности исключений для классов и функций, которые управляют объектами с динамическим временем жизни, гарантируя удаление в случае нормального завершения и завершения по исключению передача владения динамически созданным объектом в функции получение владения динамически созданным объектом из функций в качестве типа элемента в контейнерах, поддерживающих семантику перемещения, таких как std::vector, которые хранят указатели на динамически выделенные объекты (например, если желательно полиморфное поведение)
1. Если он гарантирует одинственность указателя - там точно нет какой-нибудь дополнительной переменной? 2. Почитал библиотечную реализацию. --> Сильно офигел. Вот это все точно без оверхедов скомпилится? Мне вообще там 2/3 текста непонятны, но это мои личные трудности...