乙個類只有乙個this指標。多執行緒並行程式設計對同乙個類不同物件操作為什麼不會衝突?

時間 2021-05-05 22:51:00

1樓:劉生

this指標即不是物件的成員, 也不是類靜態成員, 它既不屬於類也不屬於物件。 他是類成員函式的的隱含引數, 這也是類成員函式與普通函式的區別。

既類成員函式,會比普通函式多乙個隱含的this指標引數, 函式被呼叫時,物件的位址會通過這個引數傳給函式。

你可以嘗試sizeof 乙個物件, 你會發現沒有被this指標占用的空間。

2樓:

直接看彙編就是了,為什麼要猜???

this->最後都被編譯成什麼了,自己可以去仔細看。

關於併發問題建議去翻越《深入理解計算機系統》。

3樓:遠見

this指向這個class在記憶體裡面的實體,乙個class可以生成幾萬個實體(哥有程式乙個class生成十萬個實體),this指標只指向自己這個實體,不會指向別的實體。

4樓:「已登出」

你對叛逆者那個答案理解有偏差。

首先,所謂乙個類只有乙個this,是指每個類都只有乙個this關鍵字取自身位址。

另外,你也沒看到後面那句話「不同物件this不相同」。

最後,你也沒理解什麼是函式,什麼是執行緒安全。函式是一套在記憶體上的指令而不是資料(靜態變數另算)。執行緒安全的本質是讀寫安全,也就是一致性問題。

如果不存在寫,那麼讀永遠是執行緒安全的,因為資料永遠不會變。

5樓:當然是選擇原諒了

類是沒有this指標的,只有類被例項化以後才會有this指標,這個類的每個物件都會有乙個單獨的this指標,this指標指向的是物件在記憶體中的首位址。只要知道this指標和某個類成員的偏移,你就可以直接操作這個類成員,就算這是個私有的成員也可以哦!

6樓:讓我再吸一口

「乙個類有乙個this指標」

??應該說每乙個類的例項有乙個this指標」但不同物件裡this指標的值都不同。多執行緒並行程式設計對同乙個類不同物件操作為什麼不會衝突?」

如果你動了類裡面的static變數或者外面的全域性變數可能會衝突

如果你動了類的普通成員變數或函式

那麼不會,訪問的位址都不同怎麼會衝突?

「乙個類A,物件a,b 分別有成員函式m_funa, m_funb,有執行緒1,2,並行同時呼叫m_funa, m_funb時,如何判斷當前this值?」

你呼叫的時候打的是a.m_funa();

而不是m_funa();

你要的this值就是&a

7樓:Xi Yang

第一句話就不對。this指標沒有什麼神奇的地方,編譯的時候在呼叫method call的用來傳遞物件自己,讓你少打倆字而已。你可以把它當做乙個預先幫你設好的棧上變數。

你在C++裡這麼寫:

class Van

基本相當於C裡面這麼寫:

struct Van

{};void Van_deep_dark_fantasy(Van* this);

8樓:呵呵呵

而且對同乙個物件的this的訪問不是多執行緒安全的

只有乙個?

妹子多慮了,山師屬於有很重的文學氣的學校,而且濟南人相對很不排外,並且大概8成是妹子,矮個子也超多,實際上這個不是什麼問題,去乙個地方上學我感覺學校質量,民風,消費,宿舍條件,天氣比較重要,除了最後兩項我感覺還不錯,天氣宿舍就得好好適應一下,四川人去濟南冬天肯定是要幹脫幾層皮才行 濟南的氣候和四川基...

如何傳入乙個函式指標?

劉項 雖然用C語言中的函式指標也可以達到這個效果,但是我還是比較推薦C 中的仿函式來實現。仿函式相比函式指標有很多優點,比如型別安全。STL中有很多地方使用了仿函式,比如sort函式。sort a,a n,less 其中第3個引數就是個仿函式,在STL的原始碼中可以找到它的定義,也可以參見管清文的回...

如果建立乙個只有p類人,沒有j類人的世外桃源,intp的處境會更好還是更差?

只有p類的話,剩下8種,其功能如下 intp ti ne si fe entp ne ti fe si infp fi ne si te enfp ne fi te si istp ti se ni fe estp se ti fe ni isfp fi se ni te esfp se fi te...