為什麼要加乙個throw 到你的函式中?

2021-04-06 16:59:29 字數 546 閱讀 4272

為什麼要加乙個throw()到你的函式中?

假如你加乙個throw()屬性到你的永遠不會丟擲異常的函式中,編譯器會非常聰明的知道**的意圖和決定優化方式。考慮下面的**:

class myclass

;size_t methodthatcannotthrow() throw()

;void examplemethod()

catch (...)}};

當編譯器看到這個帶"throw()"屬性**的時候,編譯能夠優化這個"bar"變數,因為它知道從methodthatcannotthrow()函式中不會丟擲任何的異常。如果沒有這個throw()屬性,編譯器必須建立這個"bar"變數,因為假如methodthatcannotthrow丟擲了乙個異常,這個異常控制代碼可能會需要依靠這個bar變數。

另外,象prefast源**分析工具能夠(也會)用throw()注釋去優化他們的錯誤檢測能力----舉個例子,假如你有乙個try/catch而且所有呼叫的函式都已經標記了throw(),實際上你不需要這個try/catch(是的,假如你最後呼叫的函式可能丟擲異常這就會有個問題了)。

php 為什麼new乙個物件後面要加乙個反斜槓

通俗點解釋就是 指定物件具體的型別。在沒有引入將類檔案引入當前檔案時,php無法知曉你需要使用的是什麼類 相同命名空間的類檔案除外 所以 為了防止 存在多個同名類檔案,php需要你指定具體的類檔案,帶反斜槓其實就是 命名空間 路徑的表示。php反斜線做命名空間分隔符 因為使用了php的命名空間,演示...

加乙個throw 到函式中

加乙個throw 到函式中?這是異常規範,只會出現在宣告函式中,表示這個函式可能丟擲任何型別的異常 void gettag throw int 表示只丟擲int型別異常 void gettag throw int,char 表示丟擲in,char型別異常 void gettag throw 表示不會...

為什麼要找到乙個好的特徵?

好,話不多說,今天讓我們來一起分享下怎麼樣來去選擇乙個好的特徵,並且當我們區分出好的特徵的時候,好的特徵意味著什麼。在這一篇文章中,我們將會用到機器學習的分類器來作為貫穿整篇文章的例子,因為分類器只有在我們提供了好的特徵以後才可以為我們的發揮出自己的好的效果,這也意味著找到好特徵是機器學習能夠學好的...