std::shared_ptr<int> p=new int(1); shared_ptr不能通过“直接将原始这种赋值”来初始化,需要通过构造函数和辅助方法来初始化。 对于一个未初始化的智能指针,可以通过reset方法来初始化;当智能指针有值的时候调用reset会引起引用计数减1。 另外智能指针可以通过重载的bool类型操作符来判断。 #include <iostream...
【Example】C++ 运算符重载 【Example】C++ 标准库智能指针 unique_ptr 与 shared_ptr 【Example】C++ 接口(抽象类)概念讲解及例子演示 【Example】C++ 虚基类与虚继承 (菱形继承问题) 【Example】C++ Template (模板)概念讲解及编译避坑 【Example】C++ 标准库 std::thread 与 std::mutex 【Example】C++ 标准库...
任何智能指针都不应该去 get 裸指针使用,更不能 delete! // 演示创建 unique_ptrunique_ptr<Brain>u_brain=make_unique<Brain>();u_brain->HelloWorld();// 移动 unique_ptrunique_ptr<Brain>um_barin=std::move(u_brain);um_barin->HelloWorld();// 移动方法2std::swap(u_brain,um_brain);// 错...
std::unique_ptr<A> myPtr(a); myPtr->fun();//重载的->,可以理解为直接返回a指针 (*myPtr).fun();//直接取指向的对象,所以不再使用指针 std::unique_ptr<A> myOtherPtr = std::move(myPtr);//myPtr将指向a的权利移动给myOtherPtr,myPtr变为空指针 assert(myPtr != nullptr); myOtherPtr.reset(...
};voidthr(std::shared_ptr<Base> p){std::this_thread::sleep_for(std::chrono::seconds(1));std::shared_ptr<Base> lp = p;// 线程安全,虽然自增共享的 use_count{staticstd::mutex io_mutex;std::lock_guard<std::mutex>lk(io_mutex);std::cout<<"local pointer in a thread:\n"<<" lp...
push_back(std::make_unique<MyClass>()); }); std::thread t2([&vec]() { vec.push_back(std::make_unique<MyClass>()); }); // 等待线程执行完毕 t1.join(); t2.join(); return vec; } 上述代码中,createVectorWithThreads函数创建了一个空的向量vec,并通过两个线程t1和t2向向量中添加...
但是,能够实现默认构造函数是一种常见的情况。看看std::thread、std::Xstream等等--它们都有默认的构造...
void thr(std::shared_ptr p) { std::this_thread::sleep_for(std::chrono::seconds(1)); std::shared_ptr lp = p; // 线程安全,虽然自增共享的 use_count { static std::mutex io_mutex; std::lock_guardlk(io_mutex); std::cout << "local pointer in a thread:\n" ...
add_definitions(-std=c++17) add_definitions(-g) find_package(ZLIB) find_package(glog REQUIRED) find_package(OpenCV REQUIRED ) find_package(Boost REQUIRED COMPONENTS system filesystem serialization program_options thread ) find_package(DataFrame REQUIRED) ...
std::unique_ptr不⽀持复制和赋值 std::shared_ptr⽀持复制和赋值 参考 1 2 #include <iostream> 3 #include <thread> 4 5 class PP { 6 public: 7 PP(int v) { _v = v; } 8 ~PP() { 9 printf("=== pp is end. _v: %d\n", _v); 10 } 11 private: 12 int _v = -1; 13...