提问人:BlueCannonBall 提问时间:7/28/2023 最后编辑:Jan SchultkeBlueCannonBall 更新时间:9/9/2023 访问量:815
在参数列表中构造一个对象并将指向该对象内部数据的指针传递给函数是否安全?
Is constructing an object in an argument list and passing a pointer to internal data of the object to the function safe?
问:
下面的 C++ 代码格式是否正确?函数执行完毕之前或之后会被销毁吗?std::string
void my_function(const char*);
...
my_function(std::string("Something").c_str());
我知道我可以做到,但我用这种方式来说明我的观点。my_function("Something")
std::string
答:
26赞
user17732522
7/28/2023
#1
std::string 会在函数完成执行之前还是之后被销毁?
临时对象在实现它们的完整表达式的末尾(例如,通常是表达式语句的末尾)被销毁(除了一些例外,此处无关)。
这里的对象是跨整个表达式语句的完整表达式中的临时物化对象。因此,在您的示例中,它在返回后被销毁。std::string
my_function(std::string("Something").c_str());
my_function
评论
string
my_function
my_function("Something");
std::string
const
std::string