我在c++中有以下代码。

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

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

int main()
{
    printName(getName().c_str());
}

函数getName返回string。我正在将c_strstring指针传递给printName函数。我想知道在调用string函数之前是否删除了返回的printName()。如果不是,则删除返回值的时间。

最佳答案

完整表达后temporary将被销毁。



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

08-25 00:39