C 筆記 物件模型和this指標

2021-10-21 07:03:37 字數 1688 閱讀 5851

c++中,類內的成員變數和成員函式分開儲存,只有非靜態成員變數才屬於類的物件

空物件也會占用記憶體

c++編譯器會給每個空物件也分配乙個位元組空間,是為了標誌此物件佔記憶體的位置。每個空物件也應該有乙個獨一無二的記憶體位址

class person{};
cout << "size of p = " << sizeof(p) << endl;
空物件占用1個位元組記憶體

只有類的非靜態成員變數,屬於類的物件

class person;
cout << "size of p = " << sizeof(p) << endl;
只含乙個int非靜態成員變數的物件占用4個位元組記憶體

類的靜態成員變數,不屬於類的物件

class person;

int person::m_b = 100;

cout << "size of p = " << sizeof(p) << endl;
物件還是占用4個位元組記憶體

成員變數和成員函式是分開儲存的

class person

};

cout << "size of p = " << sizeof(p) << endl;
物件還是占用4個位元組記憶體

有上述可知,c++中成員變數和成員函式是分開儲存的。

每乙個非靜態成員函式只會產生乙份函式例項,也就是多個同型別的物件會共用一塊**,而**如何區分哪個物件呼叫自己。

這裡就用到了this指標,this指標指向被呼叫的成員函式所屬的物件

this指標是隱含每乙個非靜態成員函式內的一種指標

this指標不需要定義,直接使用即可

this指標的用途:

#includeusing namespace std;

class person

person& personaddmoney(person &p)

int money;

};void test01()

void test02()

int main()

c++中空指標也可以呼叫成員函式,但是也要注意有沒有用到this指標

如果用到this指標,需要加判斷保證**的健壯性。

#include using namespace std;

class person

void showpersonage()

cout << "age = " << this->m_age << endl; //報錯原因是傳入的指標為空 }

int m_age;

};void test01()

int main()

常函式:

常物件

c 物件模型和this指標

1.成員變數和成員函式分開儲存 在c 中類內的成員變數和成員函式分開儲存,只有非靜態的成員變數才屬於類的物件上 c 編譯器會給每個空物件也分配乙個記憶體空間,是為了區分空物件佔記憶體的位置 this指標是隱含每乙個非靜態成員函式內的一種指標 this指標不需要定義,直接使用即可 this指標指向被呼...

c 物件模型和this指標

成員變數和成員函式分開儲存 類內的成員變數和成員函式分開儲存 只有非靜態成員變數才屬於類的物件上,靜態成員變數以及函式都不屬於物件 空物件占用記憶體空間為1 c 編譯器會給每隔空物件也分配乙個位元組空間,是為了區分空物件佔記憶體的位置 每個空物件也應該有乙個獨一無二的記憶體位址 this指標的概念 ...

C 物件模型和this指標

在c 中,類內的成員變數和成員函式分開儲存 只有非靜態成員變數才屬於類的物件上 include using namespace std 成員變數 和 成員函式 是分開儲存的 class person static void func2 靜態成員函式,不佔物件空間 int person m b 10 ...