1
70
不,那不是真的。即使
|
2
23
如果您的代码如下所示,则会出现问题:
所以,你写的方式没问题。只有一个建议-如果你能像这样构造字符串,我的意思是-你可以在一行中这样做,有时候这样做会更好:
或者更“复杂”,例如:
这将给 给你的编译器做更多的优化,这样它就可以少做一份你的字符串(RVO)。 |
3
6
如前所述,将复制std::字符串。因此,即使原始的局部变量超出了范围,调用方也会得到std::string的副本。 我想继续读下去 RVO 额外阅读 :使用RVO的问题是它不是世界上最灵活的东西。C++ 0x的一大热点是 rvalue references 是为了解决这个问题。 |
4
5
你试过了吗? 返回字符串时将复制该字符串。 好吧,这是官方的说法,实际上这本书可能已经优化过了,但不管怎样,它都是安全的。 |
5
3
好吧,ret在MyFunc()之后有一个mystring值。如果按值返回结果,则通过复制本地对象来构造临时对象。 至于我,在以下几节中有一些关于这个主题的有趣的细节 C++ FAQ Lite . |
6
2
当然,发出无效返回值信号的更好方法是抛出异常。 另一个用例是字符串的责任是否转移到调用方。在这种情况下,应使用自动ptr。下面的代码显示了所有这些用例。
瓦伦丁·海尼茨 |
Kevin Furlong · 类型转换和泛型 6 年前 |
Oleg Volkov · T-SQL存储过程结果转换为变量 6 年前 |
Jmainol · 获取选项标记值y传递到数组中 7 年前 |
Shiranai · 使用指针在C中的一个函数中返回多个值 7 年前 |
Kayote · 函数是否总是返回值[重复] 7 年前 |
user3723688 · python导入csv函数 7 年前 |