C++函数什么时候删除返回值?

shu*_*gui 2 c++ string temporary return-value lifetime

我有以下 C++ 代码。

string getName()
{
    return "C++";
}

void printName(const char* name)
{
    cout << name << endl;
}

int main()
{
    printName(getName().c_str());
}
Run Code Online (Sandbox Code Playgroud)

该函数getName返回一个string. 我将函数c_str的指针传递给函数。我想知道在调用函数之前返回的内容是否会被删除。如果不是那么什么时候删除返回值。stringprintNamestringprintName()

son*_*yao 5

临时将在完整表达后被销毁。

所有临时对象都将在评估(词法上)包含它们创建点的完整表达式的最后一步被销毁,如果创建了多个临时对象,则它们将按照与创建顺序相反的顺序被销毁。

由创建的临时对象getName()将在包含执行完整表达式后被销毁printName(),从中获取的指针c_str在内部仍然有效printName()