gpt4 book ai didi

c++ - 临时工的生命周期

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:24:24 26 4
gpt4 key购买 nike

下面的代码工作正常,但为什么是正确的代码?为什么 foo() 返回的临时对象的“c_str()”指针有效?我想,当输入 bar() 时,这个临时文件已经被销毁了——但它似乎不是这样的。所以,现在我假设 foo() 返回的临时对象将在调用 bar() 之后被销毁——这是正确的吗?为什么?

std::string foo() {
std::string out = something...;
return out;
}

void bar( const char* ccp ) {
// do something with the string..
}

bar( foo().c_str() );

最佳答案

当完整表达式在词法上包含其评估创建临时对象的右值被完全评估时,临时对象被销毁。让我用 ASCII 艺术来演示:

____________________   full-expression ranges from 'b' to last ')'
bar( foo().c_str() );
^^^^^ ^
| |
birth funeral

关于c++ - 临时工的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5865623/

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