編譯器對屬性和方法的處理機制 機製

2020-08-14 11:06:36

編譯器對屬性和方法的處理機制 機製

 1)C++類別物件中的成員變數和成員函數是分開儲存的,C語言中的記憶體四區模型仍然有效!

成員變數:

            普通成員變數:

                                   儲存於物件中,與struct變數有相同的記憶體佈局和位元組對齊方式

            靜態成員變數:

                                   儲存於全域性數據區中

成員函數:儲存於程式碼段中。

2、C++中類的普通成員函數都隱式包含一個指向當前物件的this指針

3、靜態成員函數、成員變數屬於類 靜態成員函數與普通成員函數的區別 :

              靜態成員函數不包含指向具體物件的指針 普通成員函數包含一個指向具體物件的指針

 

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iostream>
using namespace std;

class C1
{
public:
	int i;  //4
	int j; //4
	int k;  //4
protected:
private:
}; //12

class C2
{
public:
	int i; //4 
	int j; //4
	int k; //4

	static int m; //4
public:
	int getK() const { return k; } //4
	void setK(int val) { k = val; }  //4

protected:
private:
}; //12 16 24 

struct S1
{
	int i;
	int j;
	int k;
}; //

struct S2
{
	int i;
	int j;
	int k;
	static int m;
}; //

int main()
{
	printf("c1:%d \n", sizeof(C1));//12
	printf("c2:%d \n", sizeof(C2));//12
	printf("s1:%d \n", sizeof(S1));//12
	printf("s2:%d \n", sizeof(S2));//12

	system("pause");
}