C++ std::make_shared是什么怎么用

Posted 软件工程小施同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ std::make_shared是什么怎么用相关的知识,希望对你有一定的参考价值。


shared_ptr<string> p1 = make_shared<string>(10, '9');  
 
shared_ptr<string> p2 = make_shared<string>("hello");  
 
shared_ptr<string> p3 = make_shared<string>(); 

C++11 中引入了智能指针, 同时还有一个模板函数 std::make_shared 可以返回一个指定类型的 std::shared_ptr

https://www.jianshu.com/p/03eea8262c11

// make_shared example
#include <iostream>
#include <memory>
 
int main () {
 
  std::shared_ptr<int> foo = std::make_shared<int> (10);
  // same as:
  std::shared_ptr<int> foo2 (new int(10));
 
  auto bar = std::make_shared<int> (20);
 
  auto baz = std::make_shared<std::pair<int,int>> (30,40);
 
  std::cout << "*foo: " << *foo << '\\n';
  std::cout << "*bar: " << *bar << '\\n';
  std::cout << "*baz: " << baz->first << ' ' << baz->second << '\\n';
 
  return 0;
}

 

以上是关于C++ std::make_shared是什么怎么用的主要内容,如果未能解决你的问题,请参考以下文章

C++ 复制指针所指向的对象 make_shared shard_ptr

为啥在使用静态 constexpr 成员构造时 std::make_shared 与 new 不同? [复制]

将 make_shared 与可变参数模板绑定

C++并发编程----实现线无锁线程安全的数据结构(《C++ Concurrency in Action》 读书笔记)

第23课 优先选用make系列函数

你能分配一个与 make_shared 等效的数组吗?