原文:C++使用mutable在const成員函數中加鎖

業務邏輯寫多了,有些基礎的東西就忘了,寫在這里僅僅是做個筆記。 最近要把自己的程序改成多線程,其中有一個緩沖區類,大概是這樣的: 這個比較簡單,我原本只想寫個函數,獲取當前緩沖區對象的信息用於統計,因為僅僅是獲取,所以用了const函數。不過由於是多線程,就得加個鎖,沒想到編譯直接報錯了: 由於函數是const的,那么成員變量 lock是不可修改的,而lock guard加鎖是要修改 lock變量 ...

2022-03-20 17:39 1 620 推薦指數:

查看詳情

【OOP】C++ const成員函數

預備知識 1、代碼轉換分析技巧 在早期某些編譯器會將C++代碼翻譯為C代碼,然后使用C編譯器生成可執行文件。其中翻譯的一個轉化就是:將this指針顯式添加到成員函數的第一個參數位置上,並在成員函數調用時,自動將對象的地址傳遞給參數this。 這個過程用如下代碼解釋 ...

Mon May 15 21:04:00 CST 2017 1 4414
C++const成員函數

轉自:http://blog.csdn.net/lihao21/article/details/8634876 我們知道,在C++中,若一個變量聲明為const類型,則試圖修改該變量的值的操作都被視編譯錯誤。例如, [cpp] view ...

Sat May 13 04:16:00 CST 2017 0 13288
C++ this指針和const成員函數

this指針 this指針:成員函數通過一個名為this的隱式形參來訪問調用它的那個對象。this由調用該成員函數的對象的地址初始化。 this是一個常量指針,因為this總是指向“這個”對象,不允許改變this中保存的地址。 const成員函數 ...

Fri Mar 22 22:20:00 CST 2019 0 546
c++const修飾成員函數

函數成員函數后加const后我們稱這個函數為常函數; 常函數不可以修改成員屬性 成員屬性聲明時加關鍵字mutable后,在常函數中依然可以修改 常對象: 聲明對象前加const 常對象只能調用常函數函數: 說明:紅色標注的是編譯報錯 ...

Wed Dec 25 21:12:00 CST 2019 0 1210
C++const成員變量,const成員函數

const修飾類的成員函數const修飾變量一般有兩種方式:const T *a,或者 T const *a,這兩者都是一樣的,主要看const位於*的左邊還是右邊,這里不再贅述,主要來看一下當const修飾類的成員函數時,成員函數有什么特點。https://www.cnblogs.com ...

Thu Jun 14 01:01:00 CST 2018 0 27159
c++const成員函數強制調用非const成員函數

我們都知道const成員函數只能調用非const成員函數 為了實現const和非const兩個版本,我們選擇使用重載,但是里面的內容可能是相同的,為了代碼復用可以: 使用 const_cast<SeqList&>(this),把const版本的this轉化為非 ...

Thu May 28 05:49:00 CST 2020 0 636
const關鍵字對C++成員函數的修飾

constC++成員函數的修飾分為三種:1. 修飾參數;2. 修飾返回值;3. 修飾this指針。簡述一下知識點如下,以后找功夫再完善。 1. 對函數參數的修飾。   1)const只能用來修飾輸入參數。輸出型參數不能用const來修飾。   2)如果輸入參數采用“指針傳遞”,那么加 ...

Thu Aug 31 22:59:00 CST 2017 0 7287
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM