Blu*_*all 21 c++ string temporary-objects
下面的 C++ 代码格式正确吗?std::string函数执行完成之前还是之后会被销毁?
void my_function(const char*);
...
my_function(std::string("Something").c_str());
Run Code Online (Sandbox Code Playgroud)
我知道我可以做到my_function("Something"),但我用std::string这种方式来说明我的观点。
use*_*522 26
std::string 会在函数执行完成之前还是之后被销毁?
临时对象在其具体化的完整表达式的末尾(例如,通常是表达式语句的末尾)被销毁(有一些例外,这里不相关)。
这里的对象std::string是在跨越整个my_function(std::string("Something").c_str());表达式语句的完整表达式中具体化的临时对象。因此my_function在您的示例中返回后它会被销毁。