簡體   English   中英

我應該使用參考嗎?

[英]Should I use a reference?

我有一個包含實現指針的類。 因此,在某些功能中,我多次提到實現的成員。 寫作是個好主意

// approach 1
std::string & str = m_pImpl->m_str;
str.clear();
str += "blablabla";
// ...
return str.c_str();

一次並使用引用保存指針間接,或者我應該保存引用變量(這總是4或8個字節,就像一個指針,對吧?)?

// approach 2
m_pImpl->m_str.clear();
m_pImpl->m_str += "blablabla";
// ...
return m_pImpl->m_str.c_str();

在我的用例中,變量m_pImpl-> m_str使用了大約10到20次。 恐怕我幾乎無法描述這兩種方法之間的性能差異。 有人知道或者任何人測試它會有所作為嗎? 這取決於我使用變量的頻率(一次相對於20次而不是10000次)? 或者一個體面的編譯器是否與方法1做同樣的事情?

不要試圖完成現代編譯器的工作,因為他們非常重視代碼優化:回避那些聲稱的改進技巧。

它不僅是混淆,而且方法1也容易受到錯誤的重構器在str的定義中刪除&的影響:如果這樣做,則返回的指針將懸空並且程序行為未定義 出於這些原因,我不允許在我的代碼庫中使用方法1。

從8.3.2參考文獻§4

未指定引用是否需要存儲

因此,我建議使用看起來更易讀的代碼,並將其余部分留給編譯器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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