#include <cstdio>
#include <string>
std::string foo()
{
return "Hello, World!";
}
int main()
{
printf("%s\n", foo().c_str());
}
0
A
回答
0
是的,它足够长。字符串文字将在函数返回时不再存在,但在此时它已被复制到临时文件std::string
。该字符串将被复制(或将通过复制elision在呼叫站点创建)到调用代码。结果字符串将一直存在,直到表达式的结尾,足以传递给printf
。
+1
'字符串文字将在函数返回时不再存在,否则不会,字符串文字具有静态存储持续时间。这与问题无关。 – sbabbi 2015-02-10 22:52:59
0
return "Hello, World!";
返回std::string
(隐含)从c风格字符串文字构成,其可以被认为是在功能的范围static
。
临时std::string
在这种情况下从foo()
返回后可以认为是稳定的。它将被复制,或者至少被移动到更现代的标准实现。
相关问题
- 1. 这个临时引用是否能够存活足够长的时间?
- 2. 无法将字符串拆分为具有明确生命期的字符串切片,因为字符串没有足够长的生命
- 3. 超时时间总是足够长吗?
- 4. 为字符串的实际长度分配足够的空间
- 5. string :: size_type是否足够容纳任何字符串?
- 6. C++临时对象的生命周期 - 是否安全?
- 7. LayoutAwarePage的MVVM是否足够?
- 8. 延长临时对象的生命周期
- 9. 寿命的参考值盒装不活足够长的时间
- 10. java.util.regexp是否足够高效?
- 11. uNhAddIns是否足够活跃?
- 12. Gmail是否足够安全?
- 13. PHP是否足够动态?
- 14. 这是否足够安全?
- 15. MinGW是否足够稳定
- 16. 在C++中保证临时生命期?
- 17. Android临时文件 - 生命周期
- 18. 解析长字符串日期时间
- 19. 绑定到函数参数的引用是否会延长该临时的生命周期?
- 20. 这段代码是否创建一个临时字符串?
- 21. NSMutableDictionary不够坚持足够长的时间
- 22. SQL字符串替换错误没有足够的论据格式字符串
- 23. 移动字符串到另一个字符串中有足够的能力
- 24. 将变量传递给命令 - 没有足够的格式字符串参数
- 25. 是否有必要使用===来比较Javascript中的字符串或者==是否足够?
- 26. Java中的反向字符串不使用任何临时字符串,字符或字符串生成器
- 27. 生成字符串和内存不足
- 28. 'params'串是否足够防止偶尔的读者读取它?
- 29. Python MySQLdb错误 - 格式字符串没有足够的参数
- 30. 类型错误:没有足够的参数格式字符串
是的。它足够长。 – 2015-02-10 22:36:59
http://stackoverflow.com/questions/584824/ – 2015-02-10 22:40:09