Sum*_*udu 2 c++ string temporary lifetime c++11
我需要知道以下内容通常是否有效。
string s = "some value"; string v = s.substr(0, 50).c_str();
分配v始终有效吗?由于所传回的物件的生存期会不会出现任何问题substr()?
v
substr()
son*_*yao 9
在这里有效。在完整的表达式之后,销毁由所返回的临时对象substr;其中包括的初始化v。
substr
所有临时对象都将被销毁,这是评估(按词法)包含创建它们的地点的完整表达式的最后一步,并且如果创建了多个临时对象,则它们将以与创建顺序相反的顺序销毁。即使该评估以引发异常结束也是如此。
顺便说一句:这不是分配,而是的初始化(构造)v。
归档时间:
6 年,8 月 前
查看次数:
85 次
最近记录: