C 物件模型和this指標

2022-07-29 06:45:08 字數 1693 閱讀 8429

在c++中,類內的成員變數和成員函式分開儲存

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

#include using namespace std;

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

class person

static void func2()//靜態成員函式,不佔物件空間 };

int person::m_b = 10;//類外初始化

void test01()

void test02()

int main()

通過4.3.1我們知道在c++中成員變數和成員函式是分開儲存的

每乙個非靜態成員函式只會誕生乙份函式例項,也就是說多個同型別的物件會共用一塊**

那麼問題是:這一塊**是如何區分那個物件呼叫自己的呢?

c++通過提供特殊的物件指標,this指標,解決上述問題。this指標指向被呼叫的成員函式所屬的物件

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

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

this指標的用途:

#include #include using namespace std;

class person

person& personaddage(person &p)//兩個物件年齡相加 };

//this作用1.解決名稱衝突

void test01()

//作用2.返回物件本身用*this

void test02()

int main()

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

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

示例:

#include using namespace std;

//空指標訪問成員函式

class person

void showpersonage()

cout << "person age:" << m_age << endl;

}};void test01()

int main()

常函式:

常物件:

示例:

#include using namespace std;

class person

//this指標的本質,是指標常量 指標的指向不可以修改

//person * const this 確定了指標的指向不可更改

//const person * const this 規定了指標指向的值也不可更改

//在成員函式後面加const,修飾的是this指標,讓指標指向的值也不可修改

void func()const//常函式

void func2()//隨便寫個普通函式

int m_a;

mutable int m_b;//特殊變數,即使在常函式中也能修改

};void test01()

//常物件,只能呼叫常函式

void test02()

int main()

c 物件模型和this指標

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

c 物件模型和this指標

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

C 筆記 物件模型和this指標

c 中,類內的成員變數和成員函式分開儲存,只有非靜態成員變數才屬於類的物件 空物件也會占用記憶體 c 編譯器會給每個空物件也分配乙個位元組空間,是為了標誌此物件佔記憶體的位置。每個空物件也應該有乙個獨一無二的記憶體位址 class person cout size of p sizeof p end...