【发布时间】:2019-04-26 12:19:49
【问题描述】:
我有这个初始化:
const char* str = std::string("a").c_str();
本次初始化创建了多少临时对象?
"a" 可以被视为临时工吗?对象?
我知道std::string("a") 是临时工。对象。
c_str() 的结果是一个对象,str 存储它。所以这不是临时工。对象,对吧?
【问题讨论】:
-
临时的
std::string是唯一的临时对象,而str是这个之后的悬空指针 -
我认为指针是对象。
-
@JoãoPaulo 他们是。但是,作为纯右值,初始化程序被具体化为
str,没有临时对象。在 C++17 之前有一个 -
看起来像纯右值are no longer materialized。
-
@wally 谢谢沃利。不过,我对这个词有点怀念。
标签: c++ temporary-objects