//// 5.1.shared.ptr.cpp// chapter 05 start pointers and memory management// modern c++ tutorial//// created by changkun at changkun.de// https://github.com/changkun/modern-cpp-tutorial//#include <iostream>#include <memory>void foo(std::shared_ptr<int> i){(*i)++;}int main(){// auto pointer = new int(10); // illegal, no direct assignment// std::shared_ptr constructionauto pointer = std::make_shared<int>(10);auto pointer2 = pointer; // reference count + 1auto pointer3 = pointer; // reference count + 1foo(pointer);std::cout << *pointer << std::endl; // 11int *p = pointer.get(); // does not increase reference countstd::cout << "pointer.use_count() = " << pointer.use_count() << std::endl;std::cout << "pointer2.use_count() = " << pointer2.use_count() << std::endl;std::cout << "pointer3.use_count() = " << pointer3.use_count() << std::endl;pointer2.reset();std::cout << "reset pointer2:" << std::endl;std::cout << "pointer.use_count() = " << pointer.use_count() << std::endl;std::cout << "pointer2.use_count() = " << pointer2.use_count() << std::endl;std::cout << "pointer3.use_count() = " << pointer3.use_count() << std::endl;pointer3.reset();std::cout << "reset pointer3:" << std::endl;std::cout << "pointer.use_count() = " << pointer.use_count() << std::endl;std::cout << "pointer2.use_count() = " << pointer2.use_count() << std::endl;std::cout << "pointer3.use_count() = " << pointer3.use_count() << std::endl;// std::cout << *pointer << std::endl; // reference count equals 0, illegal access// Before leaving the scope, the pointer is destructed and// the reference count is reduced to 0return 0;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。