c/c++ 類成員變量,成員函數的存儲方式,以及this指針在c++中的作用


c/c++ 類成員變量,成員函數的存儲方式,以及this指針在c++中的作用

c++不會像上圖那樣為每一個對象的成員變量和成員函數開辟內存空間,
而是像下圖那樣,只為每一個對象的成員變量開辟空間。成員函數的只開辟一個共用的空間,所有對象的都可以訪問這個公共的空間。

但是就產生了一個問題,當某一個對象去調用某個成員函數的時候,這個成員函數怎么才能知道是哪個對象調用的它呢?

c++在某一個對象調用某個成員函數的時候,把這個對象的地址,隱式地作為這個函數的參數,傳給了成員函數,所有可以在沒成員函數里顯示的使用this指針。

可以用下面的程序驗證上面的理論。
打印類占用內存的大小和對象占用內存的大小,就可以看出來,只有成員變量占用的內存空間(注意,內存對齊)。

#include <iostream>
using namespace std;

class CGood{

  int amount;
  float price;
  float total_value;
  char name[21];
};

int main(){
  cout << sizeof(CGood) <<endl;
  CGood c1;
  cout << sizeof(c1) <<endl;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM