天天看點

c++類的成員函數、資料成員存儲方式(是否屬于類的對象)

類A、B、C三個類,一個是什麼都沒有的真的空類,一個是有成員函數的類,最後一個是帶有虛函數的類。

那他們分别咱的記憶體大小是多少呢?

A=1

B=1

C=4

從A、B的比較看出成員函數是不占用類空間的

靜态資料成員和靜态成員函數時類的一部分,而不是對象的一部分(譚老師說的)。

當我們執行個體化一個對象的時候,因為這個對象是用類定義的,那麼它理所當然擁有了這個類的資料和函數。但是,一般情況下,不同的對象,他們的的資料值不同,但是函數的代碼都相同。是以,為了節約存儲空間(想象一下我們如果定義了100個對象,那麼用100段記憶體空間存儲相同的代碼,豈不是很浪費?),我們讓成員函數的代碼共享。

對于非靜态成員函數來說,它當然是對象的一部分。(隻是因為存儲方式上的特殊性,容易讓人誤解!)

類中包括成員變量和成員函數

new出來的隻是成員變量,成員函數始終存在

是以如果成員函數未使用任何成員變量的話,不管是不是static的,都能正常工作

所有函數存放在獨立于對象的存儲空間内

對象調用函數時,對靜态成員函數直接調用不存在問題,對成員函數需要把自己以this指針傳給函數以指明以哪個對象調用

c++

繼續閱讀