临时和表达行为

use*_*619 2 c++ temporary undefined-behavior

这是明确定义的行为吗?

const char* p = (std::string("Hello") + std::string("World")).c_str();
std::cout << p;
Run Code Online (Sandbox Code Playgroud)

我不确定.原因是什么?

Joh*_*itb 6

不,这是未定义的行为.这两个std::string临时工和临时由归国operator+只活到你的初始化结束const char*(充分表达结束).然后它们被摧毁并p指向不确定的记忆.

  • 每个人都只赞成@Johannes(即使@Prasoon引用了引用).非常不公平.:P (2认同)