![](/img/trans.png)
[英]Why isn't the reference counter in boost::shared_ptr volatile?
[英]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.