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

当以const char*调用接收const std::string&的函数时会产生深拷贝吗?

问题解答

当你调用foo(buffer)时,会触发深拷贝,具体过程如下:

  • 因为函数参数是const std::string&,而传入的是const char*类型,编译器会自动调用std::string的构造函数,临时创建一个std::string对象。
  • std::string从const char*构造时,会在内部分配新的内存空间,把buffer指向的字符数据完整复制到这个新空间里。
  • 这个临时std::string对象会被绑定到函数的str引用上,函数使用的是这个复制后的字符串实例。

这里不存在浅拷贝,因为原buffer是栈上的字符数组,std::string不会共享它的内存,而是独立复制一份内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:18:19