-7
我在一次採訪中被問到了這個問題,但我根本沒有線索:爲什麼ArrayIndexOutOfBound異常可以在Java中被捕獲,但是C++程序崩潰呢?
爲什麼即使經過如此多的更新之後,C++中還沒有包含數組超出範圍異常?
我在一次採訪中被問到了這個問題,但我根本沒有線索:爲什麼ArrayIndexOutOfBound異常可以在Java中被捕獲,但是C++程序崩潰呢?
爲什麼即使經過如此多的更新之後,C++中還沒有包含數組超出範圍異常?
由於在面試中你被問到了這個問題,面試官可能試圖獲得一些關於你對C++設計原理理解的知識。
在這種情況下,面試官希望討論的原則是,在C++中,您不會爲您沒有明確要求的事情支付費用。雖然邊界檢查在CPU方面可能非常便宜,但它不是免費的。在語言層面實現它會讓你付出你沒有明確要求的東西,從而違反了C++基本設計原則之一。
你讀過這個:https://stackoverflow.com/questions/1239938/accessing-an-array-out-of-bounds-gives-no-error-why – AntonH
因爲Java沒有邊界檢查,而C++沒有,至少在我使用C++時使用的編譯器中不會默認。 IIRC,一些C++編譯器可以選擇將邊界檢查(及其相關開銷)添加到編譯後的代碼中。 –
異常昂貴。除非用戶要求,否則C++的座右銘是不要使用昂貴的東西。所以如果你想要所有額外的開銷,你可以使用'std :: vector' /'std :: array',它是'at'函數,它會執行邊界檢查並會拋出異常。 – NathanOliver