c++ 成員函數與變數的記憶體分布

來源:互聯網
上載者:User

     靜態成員函數與一般成員函數的唯一區別就是沒有this指標,因此不能訪問非待用資料成員,就像我前面提到的,所有函數都存放在代碼區,靜態函數也不例外。所有有人一看到
static 這個單詞就主觀的認為是存放在全域資料區,那是不對的

很明顯,類的記憶體大小和其唯一的成員變數的記憶體大小是一致的。記憶體位址也是一致的。他們甚至可以相互轉換。換成結構體結果也是一樣。網友可以自己運行上面代碼來進行確認。 這個時候,可能有人會提出疑問了。那麼成員函數又如何?上面得代碼就好像類沒有任何成員函數一樣,根本說明不了問題。 呵呵,所有的函數都是存放在代碼區的,不管是全域函數,還是成員函數。要是成員函數佔用類的對象空間,那麼將是多麼可怕的事情:定義一次類對象就有成員函數佔用一段空間。 我們再來補充一下靜態成員函數的存放問題吧:靜態成員函數與一般成員函數的唯一區別就是沒有this指標,因此不能訪問非待用資料成員,就像我前面提到的,所有函數都存放在代碼區,靜態函數也不例外。所有有人一看到
static 這個單詞就主觀的認為是存放在全域資料區,那是不對的

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.