Line 1 的使用率真的比 Line 2 好吗? boost::shared_ptr shpStr = boost::make_shared(); // Line 1 boost::sh-6ren">
gpt4 book ai didi

c++ - boost::make_shared() 与 boost::make_shared(string (""))

转载 作者:太空狗 更新时间:2023-10-29 23:40:45 26 4
gpt4 key购买 nike

问题 1> Line 1 的使用率真的比 Line 2 好吗?

boost::shared_ptr<string> shpStr = boost::make_shared<string>(); // Line 1
boost::shared_ptr<string> shpStr = boost::make_shared<string>(string("")); // Line 2

问题 2> 一般来说,我们是否应该始终使用第 1 行而不是第 2 行?

boost::shared_ptr<Object> shpStr = boost::make_shared<Object>(); // Line 1
boost::shared_ptr<Object> shpStr = boost::make_shared<Object>(Object()); // Line 2

其中 Object 是具有默认构造函数的类。

最佳答案

Is it true that the usage of Line 1 is better than Line 2?

是的。第一个说明了它的含义:创建一个共享的、默认构造的字符串。第二个增加了一些不必要的噪音(从空字符串文字创建一个字符串,然后通过复制它创建另一个字符串),以及可能不必要的运行时开销,以达到相同的效果。

In general, is it true that we should always use Line 1 instead of Line 2?

是的。创建临时对象只是为了复制和销毁它是没有意义的,而不是仅仅创建您真正想要的对象。

关于c++ - boost::make_shared<string>() 与 boost::make_shared<string>(string ("")),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17089118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com