c++ 之 make_shared

/*
 * make_shared
 */
    描述 (Description)
        它构造一个T类型的对象,将args传递给它的构造函数,并返回一个shared_ptr类型的对象拥有并存储指向它的指针。

    声明 (Declaration)

        以下是std :: make_shared的声明。
        template <class T, class... Args>
           shared_ptr<T> make_shared (Args&&... args);

    C++11
        template <class T, class... Args>
           shared_ptr<T> make_shared (Args&&... args);

    参数 (Parameters)
        args - 它是零个或多个类型的列表。

    返回值 (Return Value)
        它返回一个shared_ptr对象。

    异常 (Exceptions)
        noexcep - 它不会抛出任何异常。


    在动态内存中分配一个对象并初始化它, 返回指向此对象的 shared_ptr,与智能指针一样,make_shared定义在头文件memory中.

    构造函数是保护或私有时,无法使用 make_shared。

/*
 * example
 */
int main ()
{
   std::shared_ptr<int> foo = std::make_shared<int> (100);
   std::shared_ptr<int> foo2 (new int(100));

   auto bar = std::make_shared<int> (200);
   auto baz = std::make_shared<std::pair<int,int>> (300,400);

   std::cout << "*foo: " << *foo << '\n';
   std::cout << "*bar: " << *bar << '\n';
   std::cout << "*baz: " << baz->first << ' ' << baz->second << '\n';

   /* 实际项目中使用 */
   // pHdl = std::make_shared<sdk_functions::RecvSyncData>(_rIp);   /* RecvSyncData 是一个类 */

   return 0;
}

/*
    *foo: 100
    *bar: 200
    *baz: 300 400
*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值