建议– 如果不使用make_shared创建shared_ptr,至少应该像下面这段代码一样创建使用智能指针管理的对象: C++ 1 2 shared_ptr<aircraft>pAircraft(newAircraft("F-16")); </aircraft> 错误#6:删掉被shared_ptr使用的裸指针! 你可以使用shared_ptr.get()这个api从一个shared_ptr获得一个裸指针的句柄。然而,这是...
make_shared,make_shared_for_overwrite(C++20) 创建管理一个新对象的共享指针(函数模板) allocate_shared,allocate_shared_for_overwrite(C++20) 创建管理一个用分配器分配的新对象的共享指针(函数模板) static_pointer_cast,dynamic_pointer_cast,const_pointer_cast,reinterpret_pointer_cast(C++17)应用static_cast、...
#include<iostream>#include<memory>intmain(){structC{int a=1;int b=2;};std::shared_ptr<C>p1(newC);std::unique_ptr<int>p2(newint(40));std::shared_ptr<int>p3=std::make_shared<int>(15);std::unique_ptr<int>p4=std::make_unique<int>(10);std::weak_ptr<int>p5=p3;std::cout<<...
C.151:使用make_shared构建shared_ptr管理的对象 Reason(原因) make_shared gives a more concise statement of the construction. It also gives an opportunity to eliminate a separate allocation for the reference counts, by placing the shared_ptr's use counts next to its object. make_shared为构造动作...
1.安装cmake, gcc, g++ windows环境 需要安装 MingGW,· 参考https://www.jianshu.com/p/1aa989808e15 2. 配置IDE 购买License http://pay.i9.org/plugin.php?id=zhanmishu_ka:index&kid=3&mod=buy http://idea.lanyus.com/ https://item.taobao.com/item.htm?id=598918850045· ...
(const std::string& name) { services[name] = std::make_shared<T>(); } template<typename T> std::shared_ptr<T>getService(const std::string& name) { auto it = services.find(name); if (it != services.end()) { return std::static_pointer_cast<T>(it->second); } return nullptr...
CMake常用用法 Cmake常用用法,下面几种太常用,就不说了 project(test) set(CMAKE_CXX_COMPILER "clang++") set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_FLAGS "-g -fexceptions -Wno-inconsistent-missing-override -fno-pie -fno-optimize-sibling-calls -fno-omit-frame-pointer -fvisibility=hidden -f...
shared_ptr允许多个指针指向同一个对象;unique_ptr则“独占”所指向的对象。标准库还定义了一个名为weak_ptr的伴随类,它是一种弱引用,指向shared_ptr所管理的对象。这三种类型都定义在memory头文件中。 make_shared的标准库函数在动态内存中分配一个对象并初始化它,返回指向此对象的shared_ptr。与智能指针一样,ma...
cmake是一个跨平台编译工具(如linux, windows,macos等),可通过简单配置文件(CMakeLists.txt)控制源码/项目编译构建过程,并生成所需库/可 执行文件。 1.Cmake安装 linux环境下,下在特定版本cmake压缩包后进行安装,安装后将路径加入到PATH中。 具体安装方法为: 下载所需版本cmake 从cmake官网cmake下在链接中下...
# 设置项目名称add_executable(demo demo.cpp)# 生成可执行文件 demo.cpp 可以是一系列文件的集合add_library(demo STATIC demo.cpp)# 生成静态库 libdemo.aadd_library(demo SHARED demo.cpp)# 生成共享库(动态库) libdemo.soset(CMAKE_C_FLAGS"${CMAKE_C_FLAGS} -rdynamic -O2 -Wall -Wno-pointer-to...