Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
#include <iostream>
#include <memory>
int main() {
auto a = std::make_shared<int>(5);
auto b = a;
{
auto c = b;
std::cout << a.use_count() << ' ';
}
std::cout << a.use_count() << '\n';
}3 2
- Ждать
3 3:cуничтожается в конце своего блока, а каждый уничтоженный владелец уменьшает счётчик на единицу. - Ждать
2 2:cкопируетb, который владеет тем же числом, что иa, поэтомуuse_count()считает всех трёх владельцев.
- На какой строке этой программы удаляется число, созданное через
std::make_shared? - Как изменится вывод программы, если создать из
aещё иstd::weak_ptr?