2017-08-24 15 views
1

最近我看到一個代碼審查過程中下面的代碼片段:構建本地對象 - 常量引用

const QString& temp("some text"); 
const QString& temp1("some text1"); 

(...) 

if (temp == "whatever") 
{ 
} 

// etc 

因爲這樣的臨時看起來有點奇怪,我只是想詢問是否有人可以解釋什麼是這種方式構建對象的優缺點?我只想去尋找const對象 - 我錯過了什麼?

+0

_the評論code_ - 這是什麼意思? – 2017-08-24 10:28:26

+0

'代碼審查期間' - 對措辭表示歉意 - 更新了說明。 – ARA

+5

要問的正確的人是編寫代碼的人。如果他們不能證明爲什麼它是這樣寫的,那麼很明顯它應該不能通過審查。 – UKMonkey

回答

0

你可以選擇一個更好的例子。

使用參考變量將是幾個優點:

1)裁判名稱可能增加一些含義/文檔的代碼。例如:

const QString& protocol_start("ABC1RQA666T"); 

字符串「ABC1RQA666T」是毫無意義的,但protocol_start可以多加線索,以什麼字符串代表。

2)如果引用被多次使用,那麼使用引用可能會更方便。

3)使用該參考是相當'便宜',因爲畢竟它只是一個別名。

但是在某些代碼中,您可能會看到ref不會多次引用的情況,ref名稱會添加一些額外的文檔值,所以在這些情況下它並不那麼有用。

+0

如果需要的話,總是可以使'temp'成爲一個值並通過const引用傳遞它。 – AMA