類A、B、C三個類,一個是什麼都沒有的真的空類,一個是有成員函數的類,最後一個是帶有虛函數的類。
那他們分别咱的記憶體大小是多少呢?
A=1
B=1
C=4
從A、B的比較看出成員函數是不占用類空間的
靜态資料成員和靜态成員函數時類的一部分,而不是對象的一部分(譚老師說的)。
當我們執行個體化一個對象的時候,因為這個對象是用類定義的,那麼它理所當然擁有了這個類的資料和函數。但是,一般情況下,不同的對象,他們的的資料值不同,但是函數的代碼都相同。是以,為了節約存儲空間(想象一下我們如果定義了100個對象,那麼用100段記憶體空間存儲相同的代碼,豈不是很浪費?),我們讓成員函數的代碼共享。
對于非靜态成員函數來說,它當然是對象的一部分。(隻是因為存儲方式上的特殊性,容易讓人誤解!)
類中包括成員變量和成員函數
new出來的隻是成員變量,成員函數始終存在
是以如果成員函數未使用任何成員變量的話,不管是不是static的,都能正常工作
所有函數存放在獨立于對象的存儲空間内
對象調用函數時,對靜态成員函數直接調用不存在問題,對成員函數需要把自己以this指針傳給函數以指明以哪個對象調用