簡體   English   中英

為什么不將boost :: shared_ptr - >運算符聲明為內聯?

[英]Why isn't the boost::shared_ptr -> operator declared inline?

由於boost::shared_ptr可以非常頻繁地調用並且只是返回一個指針,因此->運算符不是inlined的良好候選者嗎?

T * operator-> () const // never throws
{
    BOOST_ASSERT(px != 0);
    return px;
}

一個好的編譯器會自動inline這個嗎?

我應該失眠嗎? :-)

在類中定義的函數(即使用正文)是內聯的隱式候選者。 在這些情況下不需要使用inline關鍵字,這樣做很不尋常。

一個好的編譯器會自動內聯這個嗎?

很可能,是的,它會。

我應該失眠嗎?

最好別。 如果你想要超級肯定(或者你非常好奇),請檢查從編譯器發出的程序集。

請注意, shared_ptr是一個類模板 ,因此其成員函數實際上是函數模板

因為它們不是export主編,他們不僅要申報 ,但在使用它們,就像用定義的函數所有的翻譯單位也定義 inline存儲說明符。

在某種程度上, template也意味着inline

暫無
暫無

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

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