如何評價 RAII 特性在 C 中的大範圍運用?

時間 2022-01-17 03:15:07

1樓:

其實,沒有RAII的語言寫出來的模組就像拉完屎自己不擦屁股,要人家幫忙擦。

2樓:zihuatanejo

不明白題主所說的欽定是什麼意思。按題幹的意思的話,我認為可能是指

沒有專門或者明顯的語法來表示RAII。如果是這個理解,那麼我只能說,這就對了。因為RAII的目標,就是要讓變數控制的資源的生存期嚴格等同於變數自身的生存期,而變數的生存期已經由語法裡作用域部分規定了,所以不應該需要專門的語法來進行說明。

為什麼C++能做到?我認為是值語意的廣泛使用。在值語意的環境下,變數獨享其控制的資源,所以,只需要說清楚

變數作用域結束時自動呼叫析構函式

變數的複製/移動建構函式

這兩個事情,作用域就可以直接用來控制資源的生存期,這正好滿足了RAII的要求,所以不再需要額外的語法來說明這個事情。

而在引用語意的環境下,變數不再獨享資源,這樣變數的作用域無法真正表示資源的生存期,所以必須要try with resource或using這樣的語法來表達。

如何評價C 17中的新特性fold expression?

不知道為啥這麼多人反對。雖然。有些複雜不直觀。而且功能不強大,還完全可以通過其他方式代替,同時其他方式的實現還可以完成更多的功能。但是至少這種方法寫起來稍微。短那麼一些。 原子筆 C 標準委員會,只需引入乙個別的指令碼語言,放預處理後編譯期前去解釋執行,就可以簡單解決這些各種問題 巨集的功能太弱,但...

如何評價不知道C 三大特性是封裝 繼承 多型的程式設計師?

zzzman 可以這樣說,不知道三大特性,那沒什麼關係呀,有的程式設計師,本身就是使用c語言寫嵌入式系統的程式,但因為業主的原因,必須要使用c 於是,就將c 當成是c來使用了。這有什麼問題?只要能滿足業主的功能與效能的需求就行了,而具體的實現方式還真的不用太在意。我覺得寫程式非常重要的一點是,程式是...

如何評價C羅在皇馬3 1巴黎中的表現?

內馬爾大殺四方,姆巴佩撕扯皇馬的後防線的時候,這個賽季的皇馬球迷是絕對沒有辦法以穩定的心率繼續看球的。反觀C羅,本場比賽除了兩個進球以外,很少有上述四億的閃光點。老了嗎?已經不用資料看出了,就只憑感覺看了以後也會明白。C羅多努力,張佳瑋早已經給出答案,此處不談。變陣以後442,除了在中路之外,C羅也...