[英]std::string reference of a concatenation is safe?
我正在閱讀一些已經使用了很長時間沒有問題的代碼,下面我有一個簡化版本:
void SomeClass::someMethod(const std::string& arg1, const std::string& arg2) {
// unrelated code
const std::string& var = arg1 + arg2;
// var used in other concatenations
// var used to index a map
}
我會假設var
使用起來不安全,因為它引用了一個臨時的。 這里臨時的生命周期太短還是直到方法結束?
const std::string& var = arg1 + arg2;
在這里,臨時的生命周期延長到var
的生命周期。 這意味着,一般來說,代碼是安全的。
從臨時的一生 :
每當引用綁定到臨時或子對象時,臨時的生命周期將延長以匹配引用的生命周期,...
這里臨時的生命周期太短還是直到方法結束?
只要引用存活,臨時就會存活。 換句話說,使用參考是安全的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.