除了常數成員函數中的可變成員之外,「mutable」是否還有更廣泛的應用?
C 中的「mutable」關鍵字可以更改資料成員在 const 成員函數中。然而,有些人可能想知道它是否還有其他目的。
實際上,「mutable」關鍵字區分位元「const」和邏輯「const」。邏輯“const”表示物件不會透過其公共介面明顯改變。這包括諸如在 const 函數中鎖定互斥體以實現線程安全之類的場景,因為修改發生在物件的內部狀態內,無法從外部存取。
另一個應用程式正在快取計算值並透過可變成員函數存取它們。這樣的函數可以一次取得值並儲存它,保持邏輯“const”,同時仍然允許內部修改。
此外,C 11 引入了可變 lambda。這些允許修改捕獲的變數(通常按值引用)。例如:
這裡,'f2' 失敗,因為非可變 lambda 捕獲是不可修改的。因此,「可變」不僅可以更改 const 成員函數中的成員,還可以擴展到區分位元和邏輯“const”,並促進可變 lambda 中的資料修改。
以上是除了 Const 成員函數之外:「mutable」關鍵字在 C 中還有哪些其他用途?的詳細內容。更多資訊請關注PHP中文網其他相關文章!