You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于std::make_shared初始化结构体智能指针时空括号的疑问

关于std::make_shared后括号的作用

你代码里的std::make_shared<framework::tcpip::socket::SocketLwip>(),后面的()核心作用就是触发SocketLwip的无参构造函数,完成结构体实例的初始化。

具体来说:

  • std::make_shared是用来在堆上创建对象并返回对应shared_ptr的模板函数,它需要明确初始化对象的方式。这里的空括号(),就是告诉它调用SocketLwip的无参构造器创建实例——刚好你的结构体定义了公有无参构造,完全匹配这个调用逻辑。
  • 这行代码最终会在堆上生成一个SocketLwip结构体实例,同时把这个实例的所有权交给socket_LWIP这个shared_ptr智能指针。

如果去掉这个括号,语法上会直接报错,因为std::make_shared是函数,必须通过括号完成调用,空括号就对应传递空参数列表,适配无参构造的场景。

内容的提问来源于stack exchange,提问作者71GA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 18:10:35