簡體   English   中英

串聯的std :: string引用是否安全?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM