__cpp_lib_constexpr_memory202202L(C++23)constexprstd::unique_ptr 嵌套类型 类型定义 pointer该类型存在时是std::remove_reference<Deleter>::type::pointer,否则是T*。必须满足可空指针(NullablePointer)。 element_typeT,此unique_ptr所管理的对象类型 ...
#include <iostream> #include <memory> int main() { std::unique_ptr<int> ptr(new int(42)); if (ptr) std::cout << "重置前,ptr 为: " << *ptr << '\n'; ptr.reset(); (ptr ? (std::cout << "重置后,ptr 为: " << *ptr) : (std::cout << "重置后 ptr 为空")) << ...
(略, 具体与 unique_ptr<T> 类似,细节处有略微差异) 例子(改自 cppreference.com) #include <iostream> #include <memory> struct Foo { Foo() { std::cout << "Foo\n"; } ~Foo() { std::cout << "~Foo\n"; } }; int main() { std::unique_ptr<Foo> ...
Example Run this code #include <iomanip>#include <iostream>#include <memory>#include <string>#include <utility>classRes{std::strings;public:Res(std::stringarg):s{std::move(arg)}{std::cout<<"Res::Res("<<std::quoted(s)<<");\n";}~Res(){std::cout<<"Res::~Res();\n";}private...
例子(改自cppreference.com) #include<iostream>#include<memory>structFoo{Foo() {std::cout<<"Foo\n"; } ~Foo() {std::cout<<"~Foo\n"; } };intmain(){std::unique_ptr<Foo> p1; {std::cout<<"Creating new Foo...\n";std::unique_ptr<Foo>p2(new Foo);// p1 = p2; // Error !
#include <iostream>#include <memory>structFoo{Foo(int_val):val(_val){std::cout<<"Foo...\n";}~Foo(){std::cout<<"~Foo...\n";}intval;};intmain(){std::unique_ptr<Foo>up1(new Foo(1));std::unique_ptr<Foo>up2(new Foo(2));up1.swap(up2);std::cout<<"up1->val:"<<up1...
引用 cppreference(std::unique_ptr - cppreference.com) 上的话:std::unique_ptr may be ...
应该不太正确。。cppreference是这么描述的:std::shared_ptrmay be used with anincomplete typeT. ...
{ std::cout << "D::bar\n"; } }; // a function consuming a unique_ptr can take it by value or by rvalue reference std::unique_ptr<D> pass_through(std::unique_ptr<D> p) { p->bar(); return p; } void close_file(std::FILE* fp) { std::fclose(fp); } int main() { ...
[]std::unique_ptr::operatorsstd::unique_ptr::releasestd::unique_ptr::resetstd::unique_ptr::swapstd::unique_ptr::unique_ptrstd::unique_ptr::~unique_ptrstd::unreachablestd::unwrap_ref_decaystd::unwrap_referencestd::uses_allocatorstd::uses_allocator<std::function>std::uses_allocator<std::...